Uploaded image for project: 'Moodle'
  1. Moodle
  2. MDL-63655

Parenthesis miss-placed (detected running PHP 7.3)

    XMLWordPrintable

Details

    Description

      While doing random checks with PHP 7.3 (MDL-63420) I saw this happening in unit tests (because strXXX() functions now require an string needle.

      1) core_update_code_manager_testcase::test_list_plugin_folder_files
      strpos(): Non-string needles will be interpreted as strings in the future. Use an explicit chr() call to preserve the current behavior
       
      /var/www/html/lib/classes/update/code_manager.php:331
      /var/www/html/lib/tests/update_code_manager_test.php:141
      /var/www/html/lib/phpunit/classes/advanced_testcase.php:80
       
      To re-run:
       vendor/bin/phpunit "core_update_code_manager_testcase" lib/tests/update_code_manager_test.php
       
      2) core_update_code_manager_testcase::test_zip_plugin_folder
      strpos(): Non-string needles will be interpreted as strings in the future. Use an explicit chr() call to preserve the current behavior
       
      /var/www/html/lib/classes/update/code_manager.php:331
      /var/www/html/lib/classes/update/code_manager.php:224
      /var/www/html/lib/tests/update_code_manager_test.php:153
      /var/www/html/lib/phpunit/classes/advanced_testcase.php:80
       
      To re-run:
       vendor/bin/phpunit "core_update_code_manager_testcase" lib/tests/update_code_manager_test.php
       
      3) core_update_code_manager_testcase::test_archiving_plugin_version
      strpos(): Non-string needles will be interpreted as strings in the future. Use an explicit chr() call to preserve the current behavior
       
      /var/www/html/lib/classes/update/code_manager.php:331
      /var/www/html/lib/classes/update/code_manager.php:224
      /var/www/html/lib/classes/update/code_manager.php:265
      /var/www/html/lib/tests/update_code_manager_test.php:180
      /var/www/html/lib/phpunit/classes/advanced_testcase.php:80
       
      To re-run:
       vendor/bin/phpunit "core_update_code_manager_testcase" lib/tests/update_code_manager_test.php
       

      It seems, unless I'm missing something, that there is a parenthesis miss-placed there and it should be, instead:

      diff --git a/lib/classes/update/code_manager.php b/lib/classes/update/code_manager.php
      index 9eac43bf937..3493ad427fb 100644
      --- a/lib/classes/update/code_manager.php
      +++ b/lib/classes/update/code_manager.php
      @@ -328,7 +328,7 @@ class code_manager {
                   if ($fileinfo->getFilename() === '..') {
                       continue;
                   }
      -            if (strpos($fileinfo->getRealPath(), $folderpathinfo->getRealPath() !== 0)) {
      +            if (strpos($fileinfo->getRealPath(), $folderpathinfo->getRealPath()) !== 0) {
                       throw new moodle_exception('unexpected_filepath_mismatch', 'core_plugin');
                   }
                   $key = substr($fileinfo->getRealPath(), $strip);
      

      Attachments

        Issue Links

          Activity

            People

              stronk7 Eloy Lafuente (stronk7)
              stronk7 Eloy Lafuente (stronk7)
              Daniel Neis Araujo Daniel Neis Araujo
              Andrew Lyons Andrew Lyons
              CiBoT CiBoT
              Adrian Greeve, David Woloszyn, Huong Nguyen, Jake Dallimore, Meirza, Michael Hawkins, Raquel Ortega, Safat Shahin, Stevani Andolo, Matteo Scaramuccia, David Woloszyn, Huong Nguyen, Jake Dallimore, Meirza, Michael Hawkins, Raquel Ortega, Safat Shahin, Stevani Andolo, David Woloszyn, Huong Nguyen, Jake Dallimore, Meirza, Michael Hawkins, Raquel Ortega, Safat Shahin, Stevani Andolo
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:
                12/Nov/18