diff --git a/ext/standard/link.c b/ext/standard/link.c index d92e74bb67439..dfd92a0a8709a 100644 --- a/ext/standard/link.c +++ b/ext/standard/link.c @@ -84,7 +84,11 @@ PHP_FUNCTION(linkinfo) Z_PARAM_PATH(link, link_len) ZEND_PARSE_PARAMETERS_END(); - // TODO Check for empty string + if (UNEXPECTED(link_len == 0)) { + zend_argument_must_not_be_empty_error(1); + RETURN_THROWS(); + } + dirname = estrndup(link, link_len); zend_dirname(dirname, link_len); diff --git a/ext/standard/tests/file/symlink_link_linkinfo_is_link_error1.phpt b/ext/standard/tests/file/symlink_link_linkinfo_is_link_error1.phpt index f4035f8f40a2c..9b4754531633b 100644 --- a/ext/standard/tests/file/symlink_link_linkinfo_is_link_error1.phpt +++ b/ext/standard/tests/file/symlink_link_linkinfo_is_link_error1.phpt @@ -27,8 +27,16 @@ var_dump( symlink($filename, false) ); // false as linkname echo "\n*** Testing linkinfo() for error conditions ***\n"; //invalid arguments -var_dump( linkinfo('') ); // empty string as linkname -var_dump( linkinfo(false) ); // boolean false as linkname +try { + var_dump(linkinfo('')); // empty string as linkname +} catch (ValueError $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump(linkinfo(false)); // boolean false as linkname +} catch (ValueError $e) { + echo $e->getMessage() . "\n"; +} echo "Done\n"; ?> @@ -53,10 +61,6 @@ Warning: symlink(): %s in %s on line %d bool(false) *** Testing linkinfo() for error conditions *** - -Warning: linkinfo(): %s in %s on line %d -int(-1) - -Warning: linkinfo(): %s in %s on line %d -int(-1) +linkinfo(): Argument #1 ($path) must not be empty +linkinfo(): Argument #1 ($path) must not be empty Done