From: Máté Kocsis Date: Fri, 15 Nov 2019 19:44:23 +0000 (+0100) Subject: Throw an exception when an invalid comparison operator is passed to version_compare() X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6f9248359e5a0f9056e198a7ad9f87ca6e78aa56;p=php Throw an exception when an invalid comparison operator is passed to version_compare() --- diff --git a/ext/opcache/Optimizer/zend_func_info.c b/ext/opcache/Optimizer/zend_func_info.c index a973efdb72..fde3a9a91e 100644 --- a/ext/opcache/Optimizer/zend_func_info.c +++ b/ext/opcache/Optimizer/zend_func_info.c @@ -503,7 +503,7 @@ static const func_info_t func_infos[] = { FN("array_key_last", MAY_BE_NULL | MAY_BE_LONG | MAY_BE_STRING), F1("pos", UNKNOWN_INFO), F1("assert_options", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_LONG | MAY_BE_STRING | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_OBJECT | MAY_BE_OBJECT), - F0("version_compare", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_LONG), + F0("version_compare", MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_LONG), F1("str_rot13", MAY_BE_STRING), F1("stream_get_filters", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING), F0("stream_filter_register", MAY_BE_FALSE | MAY_BE_TRUE), diff --git a/ext/standard/tests/versioning/version_compare_invalid_operator.phpt b/ext/standard/tests/versioning/version_compare_invalid_operator.phpt index d759422954..eb1973924a 100644 --- a/ext/standard/tests/versioning/version_compare_invalid_operator.phpt +++ b/ext/standard/tests/versioning/version_compare_invalid_operator.phpt @@ -1,10 +1,14 @@ --TEST-- -Ensures null is returned if versions are compared with invalid operator +Ensures an exception is thrown if versions are compared with an invalid operator --CREDITS-- David Stockton - - i3logix PHP Testfest 2017 --FILE-- getMessage() . "\n"; +} ?> --EXPECT-- -NULL +Invalid comparison operator diff --git a/ext/standard/versioning.c b/ext/standard/versioning.c index c134823968..c736c8241f 100644 --- a/ext/standard/versioning.c +++ b/ext/standard/versioning.c @@ -237,7 +237,8 @@ PHP_FUNCTION(version_compare) if (!strncmp(op, "!=", op_len) || !strncmp(op, "<>", op_len) || !strncmp(op, "ne", op_len)) { RETURN_BOOL(compare != 0); } - RETURN_NULL(); + + zend_value_error("Invalid comparison operator"); } /* }}} */