]> granicus.if.org Git - php/commitdiff
Add destructor annotations in ini parser
authorNikita Popov <nikita.ppv@gmail.com>
Thu, 19 Dec 2019 09:42:10 +0000 (10:42 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Thu, 19 Dec 2019 09:43:05 +0000 (10:43 +0100)
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
ext/standard/tests/general_functions/parse_ini_string_error.phpt [new file with mode: 0644]

index a83976a2d67189ba04b9f510a043e07334f66004..30c52277a3069fe1a5c47a28b43274d0618bdf58 100644 (file)
@@ -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 (file)
index 0000000..0eba65e
--- /dev/null
@@ -0,0 +1,10 @@
+--TEST--
+Ini parsing errors should not result in memory leaks
+--FILE--
+<?php
+var_dump(parse_ini_string('a="b'));
+?>
+--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)