diff options
author | George Peter Banyard <girgias@php.net> | 2020-07-28 14:50:41 +0100 |
---|---|---|
committer | George Peter Banyard <girgias@php.net> | 2020-07-31 13:39:58 +0100 |
commit | c3105a1f8dba9ee0532d952815e8628250aed3fd (patch) | |
tree | 15abc22e703ee34463a4468e773028780a302285 | |
parent | f78a09101496d05b4fb50fe37b7dbf5d038452ec (diff) | |
download | php-git-c3105a1f8dba9ee0532d952815e8628250aed3fd.tar.gz |
ValueError for empty path in stream code
Closes GH-5902
-rw-r--r-- | ext/standard/tests/file/file_get_contents_variation8-win32.phpt | 28 | ||||
-rw-r--r-- | ext/standard/tests/file/file_get_contents_variation8.phpt | 28 | ||||
-rw-r--r-- | ext/standard/tests/file/file_put_contents_variation8-win32.phpt | 44 | ||||
-rw-r--r-- | ext/standard/tests/file/file_put_contents_variation8.phpt | 49 | ||||
-rw-r--r-- | ext/standard/tests/file/readfile_error.phpt | 30 | ||||
-rw-r--r-- | ext/standard/tests/file/readfile_variation10-win32.phpt | 20 | ||||
-rw-r--r-- | ext/standard/tests/file/readfile_variation10.phpt | bin | 1539 -> 1511 bytes | |||
-rw-r--r-- | ext/standard/tests/strings/md5_file.phpt | bin | 2425 -> 2468 bytes | |||
-rw-r--r-- | ext/standard/tests/strings/sha1_file.phpt | 20 | ||||
-rw-r--r-- | ext/tidy/tests/019.phpt | 21 | ||||
-rw-r--r-- | ext/zlib/tests/gzfile_variation3.phpt | 31 | ||||
-rw-r--r-- | ext/zlib/tests/readgzfile_variation3.phpt | 31 | ||||
-rw-r--r-- | main/streams/streams.c | 2 |
13 files changed, 139 insertions, 165 deletions
diff --git a/ext/standard/tests/file/file_get_contents_variation8-win32.phpt b/ext/standard/tests/file/file_get_contents_variation8-win32.phpt index d2e39b56bd..aa57689ad7 100644 --- a/ext/standard/tests/file/file_get_contents_variation8-win32.phpt +++ b/ext/standard/tests/file/file_get_contents_variation8-win32.phpt @@ -33,12 +33,12 @@ $names_arr = array( ); foreach($names_arr as $key =>$value) { - echo "\n-- Filename: $key --\n"; - try { - var_dump(file_get_contents($value)); - } catch (TypeError $e) { - echo $e->getMessage(), "\n"; - } + echo "\n-- Filename: $key --\n"; + try { + var_dump(file_get_contents($value)); + } catch (\TypeError|\ValueError $e) { + echo get_class($e) . ': ' . $e->getMessage(), "\n"; + } } ?> @@ -56,19 +56,13 @@ Warning: file_get_contents(1): Failed to open stream: No such file or directory bool(false) -- Filename: FALSE -- - -Warning: file_get_contents(): Filename cannot be empty in %s on line %d -bool(false) +ValueError: Path cannot be empty -- Filename: NULL -- - -Warning: file_get_contents(): Filename cannot be empty in %sfile_get_contents_variation8-win32.php on line %d -bool(false) +ValueError: Path cannot be empty -- Filename: "" -- - -Warning: file_get_contents(): Filename cannot be empty in %s on line %d -bool(false) +ValueError: Path cannot be empty -- Filename: " " -- @@ -76,10 +70,10 @@ Warning: file_get_contents( ): Failed to open stream: Permission denied in %s on bool(false) -- Filename: \0 -- -file_get_contents(): Argument #1 ($filename) must be a valid path, string given +TypeError: file_get_contents(): Argument #1 ($filename) must be a valid path, string given -- Filename: array() -- -file_get_contents(): Argument #1 ($filename) must be a valid path, array given +TypeError: file_get_contents(): Argument #1 ($filename) must be a valid path, array given -- Filename: /no/such/file/dir -- diff --git a/ext/standard/tests/file/file_get_contents_variation8.phpt b/ext/standard/tests/file/file_get_contents_variation8.phpt index fb867e28f7..5c466f1b20 100644 --- a/ext/standard/tests/file/file_get_contents_variation8.phpt +++ b/ext/standard/tests/file/file_get_contents_variation8.phpt @@ -32,12 +32,12 @@ $names_arr = array( ); for( $i=0; $i<count($names_arr); $i++ ) { - echo "-- Iteration $i --\n"; - try { - var_dump(file_get_contents($names_arr[$i])); - } catch (TypeError $e) { - echo $e->getMessage(), "\n"; - } + echo "-- Iteration $i --\n"; + try { + var_dump(file_get_contents($names_arr[$i])); + } catch (\TypeError|\ValueError $e) { + echo get_class($e) . ': ' . $e->getMessage(), "\n"; + } } echo "\n*** Done ***\n"; @@ -53,25 +53,19 @@ bool(false) Warning: file_get_contents(1): Failed to open stream: No such file or directory in %s on line %d bool(false) -- Iteration 2 -- - -Warning: file_get_contents(): Filename cannot be empty in %s on line %d -bool(false) +ValueError: Path cannot be empty -- Iteration 3 -- - -Warning: file_get_contents(): Filename cannot be empty in %s on line %d -bool(false) +ValueError: Path cannot be empty -- Iteration 4 -- - -Warning: file_get_contents(): Filename cannot be empty in %s on line %d -bool(false) +ValueError: Path cannot be empty -- Iteration 5 -- Warning: file_get_contents( ): Failed to open stream: No such file or directory in %s on line %d bool(false) -- Iteration 6 -- -file_get_contents(): Argument #1 ($filename) must be a valid path, string given +TypeError: file_get_contents(): Argument #1 ($filename) must be a valid path, string given -- Iteration 7 -- -file_get_contents(): Argument #1 ($filename) must be a valid path, array given +TypeError: file_get_contents(): Argument #1 ($filename) must be a valid path, array given -- Iteration 8 -- Warning: file_get_contents(/no/such/file/dir): Failed to open stream: No such file or directory in %s on line %d diff --git a/ext/standard/tests/file/file_put_contents_variation8-win32.phpt b/ext/standard/tests/file/file_put_contents_variation8-win32.phpt index 5246a5af23..1ba4d9e98f 100644 --- a/ext/standard/tests/file/file_put_contents_variation8-win32.phpt +++ b/ext/standard/tests/file/file_put_contents_variation8-win32.phpt @@ -31,44 +31,38 @@ $names_arr = array( ); foreach($names_arr as $key =>$value) { - echo "\n-- Filename: $key --\n"; - try { - $res = file_put_contents($value, "Some data"); - if ($res !== false && $res != null) { - echo "$res bytes written to: $value\n"; - unlink($value); - } else { - echo "Failed to write data to: $key\n"; + echo "\n-- Filename: $key --\n"; + try { + $res = file_put_contents($value, "Some data"); + if ($res !== false && $res != null) { + echo "$res bytes written to: '$value'\n"; + unlink($value); + } else { + echo "Failed to write data to: $key\n"; + } + } catch (\TypeError|\ValueError $e) { + echo get_class($e) . ': ' . $e->getMessage(), "\n"; } - } catch (TypeError $e) { - echo $e->getMessage(), "\n"; - } -}; +} ?> --EXPECTF-- *** Testing file_put_contents() : usage variation *** -- Filename: -1 -- -9 bytes written to: -1 +9 bytes written to: '-1' -- Filename: TRUE -- -9 bytes written to: 1 +9 bytes written to: '1' -- Filename: FALSE -- - -Warning: file_put_contents(): Filename cannot be empty in %s on line %d -Failed to write data to: FALSE +ValueError: Path cannot be empty -- Filename: NULL -- - -Warning: file_put_contents(): Filename cannot be empty in %s on line %d -Failed to write data to: NULL +ValueError: Path cannot be empty -- Filename: "" -- - -Warning: file_put_contents(): Filename cannot be empty in %s on line %d -Failed to write data to: "" +ValueError: Path cannot be empty -- Filename: " " -- @@ -76,10 +70,10 @@ Warning: file_put_contents( ): Failed to open stream: Permission denied in %s on Failed to write data to: " " -- Filename: \0 -- -file_put_contents(): Argument #1 ($filename) must be a valid path, string given +TypeError: file_put_contents(): Argument #1 ($filename) must be a valid path, string given -- Filename: array() -- -file_put_contents(): Argument #1 ($filename) must be a valid path, array given +TypeError: file_put_contents(): Argument #1 ($filename) must be a valid path, array given -- Filename: /no/such/file/dir -- diff --git a/ext/standard/tests/file/file_put_contents_variation8.phpt b/ext/standard/tests/file/file_put_contents_variation8.phpt index 63ac4b56fd..70e8ef48e5 100644 --- a/ext/standard/tests/file/file_put_contents_variation8.phpt +++ b/ext/standard/tests/file/file_put_contents_variation8.phpt @@ -36,19 +36,18 @@ $names_arr = array( ); for( $i=0; $i<count($names_arr); $i++ ) { - echo "-- Iteration $i --\n"; - try { - $res = file_put_contents($names_arr[$i], "Some data"); - if ($res !== false && $res != null) { - echo "$res bytes written to: $names_arr[$i]\n"; - unlink($names_arr[$i]); + echo "-- Iteration $i --\n"; + try { + $res = file_put_contents($names_arr[$i], "Some data"); + if ($res !== false && $res != null) { + echo "$res bytes written to: '$names_arr[$i]'\n"; + unlink($names_arr[$i]); + } else { + echo "Failed to write data to: '$names_arr[$i]'\n"; + } + } catch (\TypeError|\ValueError $e) { + echo get_class($e) . ': ' . $e->getMessage(), "\n"; } - else { - echo "Failed to write data to: $names_arr[$i]\n"; - } - } catch (TypeError $e) { - echo $e->getMessage(), "\n"; - } } rmdir($dir); @@ -57,34 +56,28 @@ echo "\n*** Done ***\n"; --EXPECTF-- *** Testing file_put_contents() : usage variation *** -- Iteration 0 -- -9 bytes written to: -1 +9 bytes written to: '-1' -- Iteration 1 -- -9 bytes written to: 1 +9 bytes written to: '1' -- Iteration 2 -- - -Warning: file_put_contents(): Filename cannot be empty in %s on line %d -Failed to write data to: +ValueError: Path cannot be empty -- Iteration 3 -- - -Warning: file_put_contents(): Filename cannot be empty in %s on line %d -Failed to write data to: +ValueError: Path cannot be empty -- Iteration 4 -- - -Warning: file_put_contents(): Filename cannot be empty in %s on line %d -Failed to write data to: +ValueError: Path cannot be empty -- Iteration 5 -- -9 bytes written to: +9 bytes written to: ' ' -- Iteration 6 -- -file_put_contents(): Argument #1 ($filename) must be a valid path, string given +TypeError: file_put_contents(): Argument #1 ($filename) must be a valid path, string given -- Iteration 7 -- -file_put_contents(): Argument #1 ($filename) must be a valid path, array given +TypeError: file_put_contents(): Argument #1 ($filename) must be a valid path, array given -- Iteration 8 -- Warning: file_put_contents(%sdir): Failed to open stream: %s in %s on line %d -Failed to write data to: %sir +Failed to write data to: '%sir' -- Iteration 9 -- Warning: file_put_contents(%sphp): Failed to open stream: %s in %s on line %d -Failed to write data to: %sphp +Failed to write data to: '%sphp' *** Done *** diff --git a/ext/standard/tests/file/readfile_error.phpt b/ext/standard/tests/file/readfile_error.phpt index 6ae9f9a4de..bec5b383d7 100644 --- a/ext/standard/tests/file/readfile_error.phpt +++ b/ext/standard/tests/file/readfile_error.phpt @@ -8,9 +8,21 @@ echo "*** Test readfile(): error conditions ***\n"; echo "\n-- Testing readfile() with invalid arguments --\n"; // invalid arguments -var_dump( readfile(NULL) ); // NULL as $filename -var_dump( readfile('') ); // empty string as $filename -var_dump( readfile(false) ); // boolean false as $filename +try { + var_dump( readfile(NULL) ); // NULL as $filename +} catch (\ValueError $e) { + echo $e->getMessage() . \PHP_EOL; +} +try { + var_dump( readfile('') ); // empty string as $filename +} catch (\ValueError $e) { + echo $e->getMessage() . \PHP_EOL; +} +try { + var_dump( readfile(false) ); // boolean false as $filename +} catch (\ValueError $e) { + echo $e->getMessage() . \PHP_EOL; +} echo "\n-- Testing readfile() with non-existent file --\n"; $non_existent_file = __DIR__."/non_existent_file.tmp"; @@ -22,15 +34,9 @@ echo "Done\n"; *** Test readfile(): error conditions *** -- Testing readfile() with invalid arguments -- - -Warning: readfile(): Filename cannot be empty in %s on line %d -bool(false) - -Warning: readfile(): Filename cannot be empty in %s on line %d -bool(false) - -Warning: readfile(): Filename cannot be empty in %s on line %d -bool(false) +Path cannot be empty +Path cannot be empty +Path cannot be empty -- Testing readfile() with non-existent file -- diff --git a/ext/standard/tests/file/readfile_variation10-win32.phpt b/ext/standard/tests/file/readfile_variation10-win32.phpt index ecd850eb59..05753f93a2 100644 --- a/ext/standard/tests/file/readfile_variation10-win32.phpt +++ b/ext/standard/tests/file/readfile_variation10-win32.phpt @@ -35,11 +35,10 @@ foreach($names_arr as $key => $value) { echo "\n-- Filename: $key --\n"; try { readfile($value); - } catch (TypeError $e) { - echo $e->getMessage(), "\n"; + } catch (\TypeError|\ValueError $e) { + echo get_class($e) . ': ' . $e->getMessage(), "\n"; } -}; - +} ?> --EXPECTF-- *** Testing readfile() : variation *** @@ -53,26 +52,23 @@ Warning: readfile(-1): Failed to open stream: No such file or directory in %s on Warning: readfile(1): Failed to open stream: No such file or directory in %s on line %d -- Filename: FALSE -- - -Warning: readfile(): Filename cannot be empty in %s on line %d +ValueError: Path cannot be empty -- Filename: NULL -- - -Warning: readfile(): Filename cannot be empty in %s on line %d +ValueError: Path cannot be empty -- Filename: "" -- - -Warning: readfile(): Filename cannot be empty in %s on line %d +ValueError: Path cannot be empty -- Filename: " " -- Warning: readfile( ): Failed to open stream: Permission denied in %s on line %d -- Filename: \0 -- -readfile(): Argument #1 ($filename) must be a valid path, string given +TypeError: readfile(): Argument #1 ($filename) must be a valid path, string given -- Filename: array() -- -readfile(): Argument #1 ($filename) must be a valid path, array given +TypeError: readfile(): Argument #1 ($filename) must be a valid path, array given -- Filename: /no/such/file/dir -- diff --git a/ext/standard/tests/file/readfile_variation10.phpt b/ext/standard/tests/file/readfile_variation10.phpt Binary files differindex 304f57154c..06e010fed0 100644 --- a/ext/standard/tests/file/readfile_variation10.phpt +++ b/ext/standard/tests/file/readfile_variation10.phpt diff --git a/ext/standard/tests/strings/md5_file.phpt b/ext/standard/tests/strings/md5_file.phpt Binary files differindex 4bc9096017..26eb03bc5a 100644 --- a/ext/standard/tests/strings/md5_file.phpt +++ b/ext/standard/tests/strings/md5_file.phpt diff --git a/ext/standard/tests/strings/sha1_file.phpt b/ext/standard/tests/strings/sha1_file.phpt index 3d4dbfe2cf..55130cb98a 100644 --- a/ext/standard/tests/strings/sha1_file.phpt +++ b/ext/standard/tests/strings/sha1_file.phpt @@ -32,7 +32,11 @@ fclose($handle2); echo "\n*** Testing for error conditions ***\n"; echo "\n-- No filename --\n"; -var_dump( sha1_file("") ); +try { + var_dump( sha1_file("") ); +} catch (\ValueError $e) { + echo $e->getMessage() . \PHP_EOL; +} echo "\n-- invalid filename --\n"; var_dump( sha1_file("rewncwYcn89q") ); @@ -41,7 +45,11 @@ echo "\n-- Scalar value as filename --\n"; var_dump( sha1_file(12) ); echo "\n-- NULL as filename --\n"; -var_dump( sha1_file(NULL) ); +try { + var_dump( sha1_file(NULL) ); +} catch (\ValueError $e) { + echo $e->getMessage() . \PHP_EOL; +} echo "\n-- Hexadecimal Output for Empty file as Argument --\n"; var_dump( sha1_file("EmptyFileSHA1.txt") ); @@ -66,9 +74,7 @@ unlink("EmptyFileSHA1.txt"); *** Testing for error conditions *** -- No filename -- - -Warning: sha1_file(): Filename cannot be empty in %s on line %d -bool(false) +Path cannot be empty -- invalid filename -- @@ -81,9 +87,7 @@ Warning: sha1_file(12): Failed to open stream: No such file or directory in %s o bool(false) -- NULL as filename -- - -Warning: sha1_file(): Filename cannot be empty in %s on line %d -bool(false) +Path cannot be empty -- Hexadecimal Output for Empty file as Argument -- string(40) "da39a3ee5e6b4b0d3255bfef95601890afd80709" diff --git a/ext/tidy/tests/019.phpt b/ext/tidy/tests/019.phpt index 425b42889d..69d7fd943f 100644 --- a/ext/tidy/tests/019.phpt +++ b/ext/tidy/tests/019.phpt @@ -12,9 +12,18 @@ tidy_repair_string($s, $l, $l); tidy_repair_string($s, $s, $s); tidy_repair_string($l, $l, $l); -tidy_repair_file($s, $l, $l, $l); -tidy_repair_file($s, $s, $s, $s); -tidy_repair_file($l, $l, $l ,$l); +try { + tidy_repair_file($s, $l, $l, $l); +} catch (\ValueError $e) { + echo $e->getMessage() . \PHP_EOL; +} +try { + tidy_repair_file($s, $s, $s, $s); +} catch (\ValueError $e) { + echo $e->getMessage() . \PHP_EOL; +} + +tidy_repair_file($l, $l, $l ,$l); // This doesn't emit any warning, TODO look into echo "Done\n"; ?> @@ -28,8 +37,6 @@ Warning: tidy_repair_string(): Could not load configuration file '' in %s on lin Warning: tidy_repair_string(): Could not load configuration file '1' in %s on line %d Warning: tidy_repair_string(): Could not set encoding '1' in %s on line %d - -Warning: tidy_repair_file(): Filename cannot be empty in %s on line %d - -Warning: tidy_repair_file(): Filename cannot be empty in %s on line %d +Path cannot be empty +Path cannot be empty Done diff --git a/ext/zlib/tests/gzfile_variation3.phpt b/ext/zlib/tests/gzfile_variation3.phpt index bd6e7a5086..276c839468 100644 --- a/ext/zlib/tests/gzfile_variation3.phpt +++ b/ext/zlib/tests/gzfile_variation3.phpt @@ -25,24 +25,17 @@ $variation = array( foreach ( $variation as $var ) { - var_dump(gzfile( $var , $use_include_path ) ); + try { + var_dump(gzfile( $var , $use_include_path ) ); + } catch (\ValueError $e) { + echo $e->getMessage() . \PHP_EOL; + } } ?> ---EXPECTF-- -Warning: gzfile(): Filename cannot be empty in %s on line %d -bool(false) - -Warning: gzfile(): Filename cannot be empty in %s on line %d -bool(false) - -Warning: gzfile(): Filename cannot be empty in %s on line %d -bool(false) - -Warning: gzfile(): Filename cannot be empty in %s on line %d -bool(false) - -Warning: gzfile(): Filename cannot be empty in %s on line %d -bool(false) - -Warning: gzfile(): Filename cannot be empty in %s on line %d -bool(false) +--EXPECT-- +Path cannot be empty +Path cannot be empty +Path cannot be empty +Path cannot be empty +Path cannot be empty +Path cannot be empty diff --git a/ext/zlib/tests/readgzfile_variation3.phpt b/ext/zlib/tests/readgzfile_variation3.phpt index 11c5933d52..4a7fcecf08 100644 --- a/ext/zlib/tests/readgzfile_variation3.phpt +++ b/ext/zlib/tests/readgzfile_variation3.phpt @@ -25,24 +25,17 @@ $variation = array( foreach ( $variation as $var ) { - var_dump(readgzfile( $var , $use_include_path ) ); + try { + var_dump(readgzfile( $var , $use_include_path ) ); + } catch (\ValueError $e) { + echo $e->getMessage() . \PHP_EOL; + } } ?> ---EXPECTF-- -Warning: readgzfile(): Filename cannot be empty in %s on line %d -bool(false) - -Warning: readgzfile(): Filename cannot be empty in %s on line %d -bool(false) - -Warning: readgzfile(): Filename cannot be empty in %s on line %d -bool(false) - -Warning: readgzfile(): Filename cannot be empty in %s on line %d -bool(false) - -Warning: readgzfile(): Filename cannot be empty in %s on line %d -bool(false) - -Warning: readgzfile(): Filename cannot be empty in %s on line %d -bool(false) +--EXPECT-- +Path cannot be empty +Path cannot be empty +Path cannot be empty +Path cannot be empty +Path cannot be empty +Path cannot be empty diff --git a/main/streams/streams.c b/main/streams/streams.c index ea0738c82a..686427bc96 100644 --- a/main/streams/streams.c +++ b/main/streams/streams.c @@ -2066,7 +2066,7 @@ PHPAPI php_stream *_php_stream_open_wrapper_ex(const char *path, const char *mod } if (!path || !*path) { - php_error_docref(NULL, E_WARNING, "Filename cannot be empty"); + zend_value_error("Path cannot be empty"); return NULL; } |