Skip to content

Commit 3afd6d3

Browse files
authored
/ext/standard: Check for empty string in linkinfo() (#21793)
1 parent 7cd8a0a commit 3afd6d3

File tree

4 files changed

+14
-9
lines changed

4 files changed

+14
-9
lines changed

NEWS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,8 @@ PHP NEWS
166166
throw a ValueError. (alexandre-daubois)
167167
. array_change_key_case() now raises a ValueError when an invalid $case
168168
argument value is passed. (Girgias)
169+
. linkinfo() now raises a ValueError when the argument is an empty string.
170+
(Weilin Du)
169171

170172
- Streams:
171173
. Added so_keepalive, tcp_keepidle, tcp_keepintvl and tcp_keepcnt stream

UPGRADING

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ PHP 8.6 UPGRADE NOTES
8888
argument value is passed.
8989
. array_change_key_case() now raises a ValueError when an invalid $case
9090
argument value is passed.
91+
. linkinfo() now raises a ValueError when the $path argument is empty.
9192
. pathinfo() now raises a ValueError when an invalid $flag
9293
argument value is passed.
9394
. scandir() now raises a ValueError when an invalid $sorting_order

ext/standard/link.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,11 @@ PHP_FUNCTION(linkinfo)
8484
Z_PARAM_PATH(link, link_len)
8585
ZEND_PARSE_PARAMETERS_END();
8686

87-
// TODO Check for empty string
87+
if (UNEXPECTED(link_len == 0)) {
88+
zend_argument_must_not_be_empty_error(1);
89+
RETURN_THROWS();
90+
}
91+
8892
dirname = estrndup(link, link_len);
8993
zend_dirname(dirname, link_len);
9094

ext/standard/tests/file/symlink_link_linkinfo_is_link_error1.phpt

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,11 @@ var_dump( symlink($filename, false) ); // false as linkname
2727
echo "\n*** Testing linkinfo() for error conditions ***\n";
2828

2929
//invalid arguments
30-
var_dump( linkinfo('') ); // empty string as linkname
31-
var_dump( linkinfo(false) ); // boolean false as linkname
30+
try {
31+
var_dump(linkinfo('')); // empty string as linkname
32+
} catch (ValueError $e) {
33+
echo $e->getMessage() . "\n";
34+
}
3235

3336
echo "Done\n";
3437
?>
@@ -53,10 +56,5 @@ Warning: symlink(): %s in %s on line %d
5356
bool(false)
5457

5558
*** Testing linkinfo() for error conditions ***
56-
57-
Warning: linkinfo(): %s in %s on line %d
58-
int(-1)
59-
60-
Warning: linkinfo(): %s in %s on line %d
61-
int(-1)
59+
linkinfo(): Argument #1 ($path) must not be empty
6260
Done

0 commit comments

Comments
 (0)