From 0f078f6e78c70ec544adea4b06c4aebfba356a8e Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Thu, 19 Dec 2019 10:42:10 +0100 Subject: [PATCH] Add destructor annotations in ini parser It would be better to switch this to use %union and %type annotations, but not going to do that change for 7.3. --- Zend/zend_ini_parser.y | 2 +- .../general_functions/parse_ini_string_error.phpt | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 ext/standard/tests/general_functions/parse_ini_string_error.phpt diff --git a/Zend/zend_ini_parser.y b/Zend/zend_ini_parser.y index a83976a2d67..30c52277a30 100644 --- a/Zend/zend_ini_parser.y +++ b/Zend/zend_ini_parser.y @@ -310,7 +310,7 @@ static void zval_ini_dtor(zval *zv) %left '|' '&' '^' %right '~' '!' -%destructor { zval_ini_dtor(&$$); } TC_RAW TC_CONSTANT TC_NUMBER TC_STRING TC_WHITESPACE TC_LABEL TC_OFFSET TC_VARNAME BOOL_TRUE BOOL_FALSE NULL_NULL +%destructor { zval_ini_dtor(&$$); } TC_RAW TC_CONSTANT TC_NUMBER TC_STRING TC_WHITESPACE TC_LABEL TC_OFFSET TC_VARNAME BOOL_TRUE BOOL_FALSE NULL_NULL cfg_var_ref constant_literal constant_string encapsed_list expr option_offset section_string_or_value string_or_value var_string_list var_string_list_section %% diff --git a/ext/standard/tests/general_functions/parse_ini_string_error.phpt b/ext/standard/tests/general_functions/parse_ini_string_error.phpt new file mode 100644 index 00000000000..0eba65ea17e --- /dev/null +++ b/ext/standard/tests/general_functions/parse_ini_string_error.phpt @@ -0,0 +1,10 @@ +--TEST-- +Ini parsing errors should not result in memory leaks +--FILE-- + +--EXPECTF-- +Warning: syntax error, unexpected $end, expecting TC_DOLLAR_CURLY or TC_QUOTED_STRING or '"' in Unknown on line 1 + in %s on line %d +bool(false)