From:             d dot stogov at turck dot spb dot eu
Operating system: Windows
PHP version:      4.3.3
PHP Bug Type:     Directory function related
Bug description:  Incorrect handling of absolute path without drive.

Description:
------------
This BUG is Windows releated. PHP thinks what filepathes started form one
slash are relative. The problem comes from IS_ABSOLUTE_PATH definw which
is defined in file "TSRM/tsrm_virtual_cwd.h" line 64.

The original source is

#define IS_ABSOLUTE_PATH(path, len) \
  (len >= 2 && ((isalpha(path[0]) && path[1] == ':') || (IS_SLASH(path[0])
&& IS_SLASH(path[1]))))

but I think it must be changed to

#define IS_ABSOLUTE_PATH(path, len) \
  ((len >= 2 && isalpha(path[0]) && path[1] == ':') || \
   (len >= 1 && IS_SLASH(path[0]) && IS_SLASH(path[1])))

I demonstrate the BUG of the glob() function, but it can occur in any
place where IS_ABSOLUTE_PATH is used.

Reproduce code:
---------------
<?php
function remove_drive($file) {
  return substr($file,2);
}

if (substr(PHP_OS,0,3) == WIN) {
  $drive = substr(getcwd(),0,2);
  $a1 = glob("/*");
  $a2 = array_map("remove_drive",glob($drive."/*"));
  if ($a1==$a2) {
    echo "ok";
  } else {
    echo "fail";
  }
} else {
  echo "ok";
}
?>


Expected result:
----------------
ok

Actual result:
--------------
fail

-- 
Edit bug report at http://bugs.php.net/?id=25583&edit=1
-- 
Try a CVS snapshot (php4):  http://bugs.php.net/fix.php?id=25583&r=trysnapshot4
Try a CVS snapshot (php5):  http://bugs.php.net/fix.php?id=25583&r=trysnapshot5
Fixed in CVS:               http://bugs.php.net/fix.php?id=25583&r=fixedcvs
Fixed in release:           http://bugs.php.net/fix.php?id=25583&r=alreadyfixed
Need backtrace:             http://bugs.php.net/fix.php?id=25583&r=needtrace
Try newer version:          http://bugs.php.net/fix.php?id=25583&r=oldversion
Not developer issue:        http://bugs.php.net/fix.php?id=25583&r=support
Expected behavior:          http://bugs.php.net/fix.php?id=25583&r=notwrong
Not enough info:            http://bugs.php.net/fix.php?id=25583&r=notenoughinfo
Submitted twice:            http://bugs.php.net/fix.php?id=25583&r=submittedtwice
register_globals:           http://bugs.php.net/fix.php?id=25583&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=25583&r=php3
Daylight Savings:           http://bugs.php.net/fix.php?id=25583&r=dst
IIS Stability:              http://bugs.php.net/fix.php?id=25583&r=isapi
Install GNU Sed:            http://bugs.php.net/fix.php?id=25583&r=gnused
Floating point limitations: http://bugs.php.net/fix.php?id=25583&r=float

Reply via email to