WordPress.org

Make WordPress Core

Ticket #39309: 39309-phpbug.diff

File 39309-phpbug.diff, 1.4 KB (added by dd32, 8 months ago)

Alternative to 39309-preemptive-softfail.patch

  • src/wp-admin/includes/file.php

    diff --git a/src/wp-admin/includes/file.php b/src/wp-admin/includes/file.php
    index 0cb68f9164..a79e14f927 100644
    a b function verify_file_signature( $filename, $signatures, $filename_for_errors = f 
    11471147                );
    11481148        }
    11491149
     1150        // Check for a edge-case affecting PHP Maths abilities
     1151        if (
     1152                ! extension_loaded('sodium') &&
     1153                function_exists( 'php_sapi_name' ) && 'fpm' == php_sapi_name() &&
     1154                PHP_VERSION_ID >= 70200 && PHP_VERSION_ID <= 70202 &&
     1155                ini_get( 'opcache.enable' )
     1156        ) {
     1157                // Sodium_Compat isn't compatible with PHP 7.2.0~7.2.2 due to a PHP bug, bail early as it'll fail.
     1158                // https://bugs.php.net/bug.php?id=75938
     1159
     1160                return new WP_Error(
     1161                        'signature_verification_unsupported',
     1162                        sprintf(
     1163                                /* translators: 1: The filename of the package. */
     1164                                __( 'The authenticity of %1$s could not be verified as signature verification is unavailable on this system.' ),
     1165                                '<span class="code">' . esc_html( $filename_for_errors ) . '</span>'
     1166                        ),
     1167                        array (
     1168                                'php'    => phpversion(),
     1169                                'sodium' => defined( 'SODIUM_LIBRARY_VERSION' ) ? SODIUM_LIBRARY_VERSION : ( defined( 'ParagonIE_Sodium_Compat::VERSION_STRING' ) ? ParagonIE_Sodium_Compat::VERSION_STRING : false ),
     1170                        )
     1171                );
     1172
     1173        }
     1174
    11501175        if ( ! $signatures ) {
    11511176                return new WP_Error(
    11521177                        'signature_verification_no_signature',