Browse Source

Be consistent in is_executable on a directory in any stream wrapper.

Current code treats the 'local files' stream wrapper ('php_plain_files_wrapper')
  different than all other stream wrappers. For the 'local' stream wrapper,
  is_executable only checks the mode key in the filestat array on the file or
  directory in question. For other stream wrappers, is_executable always returns
  FALSE on a directory. This treatment is inconsistent on its face.

  Also, for a custom stream wrapper that also points to local files, the result
  of is_executable is always FALSE even though it may be TRUE if the function were
  called on the same item using the 'local' stream wrapper from PHP.

  NOTE: patch does not attempt to add a test for this as there are no tests of
  is_executable for stream wrappers.
pull/3186/merge
solotandem 9 years ago
committed by Joe Watkins
parent
commit
94b4abdbc4
No known key found for this signature in database GPG Key ID: F9BA0ADA31CBD89E
  1. 2
      ext/phar/tests/phar_oo_002.phpt
  2. 2
      ext/standard/filestat.c

2
ext/phar/tests/phar_oo_002.phpt

@ -71,7 +71,7 @@ int(0)
string(3) "dir"
bool(false)
bool(true)
bool(false)
bool(true)
bool(false)
bool(true)
bool(false)

2
ext/standard/filestat.c

@ -905,7 +905,7 @@ PHPAPI void php_stat(const char *filename, size_t filename_length, int type, zva
case FS_IS_R:
RETURN_BOOL((ssb.sb.st_mode&rmask)!=0);
case FS_IS_X:
RETURN_BOOL((ssb.sb.st_mode&xmask)!=0 && !S_ISDIR(ssb.sb.st_mode));
RETURN_BOOL((ssb.sb.st_mode&xmask)!=0);
case FS_IS_FILE:
RETURN_BOOL(S_ISREG(ssb.sb.st_mode));
case FS_IS_DIR:

Loading…
Cancel
Save