@@ -2508,6 +2508,12 @@ PHP_FUNCTION(parse_ini_file)
25082508 RETURN_THROWS ();
25092509 }
25102510
2511+ /* Sanity check */
2512+ if (UNEXPECTED (scanner_mode != ZEND_INI_SCANNER_NORMAL && scanner_mode != ZEND_INI_SCANNER_RAW && scanner_mode != ZEND_INI_SCANNER_TYPED )) {
2513+ php_error_docref (NULL , E_WARNING , "Invalid scanner mode" );
2514+ RETURN_FALSE ;
2515+ }
2516+
25112517 /* Set callback function */
25122518 if (process_sections ) {
25132519 ZVAL_UNDEF (& BG (active_ini_file_section ));
@@ -2520,7 +2526,7 @@ PHP_FUNCTION(parse_ini_file)
25202526 zend_stream_init_filename_ex (& fh , filename );
25212527
25222528 array_init (return_value );
2523- if (zend_parse_ini_file (& fh , 0 , (int )scanner_mode , ini_parser_cb , return_value ) == FAILURE ) {
2529+ if (zend_parse_ini_file (& fh , 0 , (zend_ini_scanner_mode )scanner_mode , ini_parser_cb , return_value ) == FAILURE ) {
25242530 zend_array_destroy (Z_ARR_P (return_value ));
25252531 RETVAL_FALSE ;
25262532 }
@@ -2544,6 +2550,12 @@ PHP_FUNCTION(parse_ini_string)
25442550 Z_PARAM_LONG (scanner_mode )
25452551 ZEND_PARSE_PARAMETERS_END ();
25462552
2553+ /* Sanity check */
2554+ if (UNEXPECTED (scanner_mode != ZEND_INI_SCANNER_NORMAL && scanner_mode != ZEND_INI_SCANNER_RAW && scanner_mode != ZEND_INI_SCANNER_TYPED )) {
2555+ php_error_docref (NULL , E_WARNING , "Invalid scanner mode" );
2556+ RETURN_FALSE ;
2557+ }
2558+
25472559 if (INT_MAX - str_len < ZEND_MMAP_AHEAD ) {
25482560 RETVAL_FALSE ;
25492561 }
@@ -2562,7 +2574,7 @@ PHP_FUNCTION(parse_ini_string)
25622574 memset (string + str_len , 0 , ZEND_MMAP_AHEAD );
25632575
25642576 array_init (return_value );
2565- if (zend_parse_ini_string (string , 0 , (int )scanner_mode , ini_parser_cb , return_value ) == FAILURE ) {
2577+ if (zend_parse_ini_string (string , 0 , (zend_ini_scanner_mode )scanner_mode , ini_parser_cb , return_value ) == FAILURE ) {
25662578 zend_array_destroy (Z_ARR_P (return_value ));
25672579 RETVAL_FALSE ;
25682580 }
0 commit comments