freebsd-ports/lang/php70/files/patch-main_php__ini.c
Torsten Zuehlsdorff 8e9dc2a0d1 lang/php70 and lang/php71: Parse multiple [PATH=] and [HOST=] sections properly
Adding a patch to fix bug #74738 in PHP 7.0 and 7.1:
https://bugs.php.net/bug.php?id=74738

Reported by: Philip Jocks <pj@netzkommune.de>
MFH:         2017Q2
2017-06-16 14:54:36 +00:00

31 lines
1.3 KiB
C

--- main/php_ini.c.orig 2017-06-14 13:27:29 UTC
+++ main/php_ini.c
@@ -280,7 +280,7 @@ static void php_ini_parser_cb(zval *arg1
size_t key_len;
/* PATH sections */
- if (zend_string_equals_literal_ci(Z_STR_P(arg1), "PATH")) {
+ if (!zend_binary_strncasecmp(Z_STRVAL_P(arg1), Z_STRLEN_P(arg1), "PATH", sizeof("PATH") - 1, sizeof("PATH") - 1)) {
key = Z_STRVAL_P(arg1);
key = key + sizeof("PATH") - 1;
key_len = Z_STRLEN_P(arg1) - sizeof("PATH") + 1;
@@ -291,7 +291,7 @@ static void php_ini_parser_cb(zval *arg1
TRANSLATE_SLASHES_LOWER(key);
/* HOST sections */
- } else if (zend_string_equals_literal_ci(Z_STR_P(arg1), "HOST")) {
+ } else if (!zend_binary_strncasecmp(Z_STRVAL_P(arg1), Z_STRLEN_P(arg1), "HOST", sizeof("HOST") - 1, sizeof("HOST") - 1)) {
key = Z_STRVAL_P(arg1);
key = key + sizeof("HOST") - 1;
key_len = Z_STRLEN_P(arg1) - sizeof("HOST") + 1;
@@ -328,7 +328,9 @@ static void php_ini_parser_cb(zval *arg1
zend_hash_init(Z_ARRVAL(section_arr), 8, NULL, (dtor_func_t) config_zval_dtor, 1);
entry = zend_hash_str_update(target_hash, key, key_len, &section_arr);
}
- active_ini_hash = Z_ARRVAL_P(entry);
+ if (Z_TYPE_P(entry) == IS_ARRAY) {
+ active_ini_hash = Z_ARRVAL_P(entry);
+ }
}
}
break;