From: Yasuo Ohgaki Date: Tue, 27 Jan 2015 23:03:37 +0000 (+0900) Subject: Fixed crash X-Git-Tag: PRE_PHP7_REMOVALS~21^2~76^2~4 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=feeaaa4c3fe68bfcc3a2e3c096b246aa69cc048b;p=php Fixed crash --- diff --git a/ext/session/session.c b/ext/session/session.c index c2ec373419..9c995b6c62 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -2203,24 +2203,26 @@ static PHP_FUNCTION(session_start) /* set options */ if (options) { ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(options), num_idx, str_idx, value) { - switch(Z_TYPE_P(value)) { - case IS_STRING: - case IS_TRUE: - case IS_FALSE: - case IS_LONG: - if (!zend_string_equals_literal(str_idx, "read_and_close")) { - convert_to_boolean(value); - read_and_close = (Z_TYPE_P(value) == IS_TRUE) ? 1 : 0; - } else { - convert_to_string(value); - if (php_session_start_set_ini(str_idx, Z_STR_P(value)) == FAILURE) { - php_error_docref(NULL, E_WARNING, "Setting option '%s' failed", str_idx->val); + if (str_idx) { + switch(Z_TYPE_P(value)) { + case IS_STRING: + case IS_TRUE: + case IS_FALSE: + case IS_LONG: + if (zend_string_equals_literal(str_idx, "read_and_close")) { + convert_to_boolean(value); + read_and_close = (Z_TYPE_P(value) == IS_TRUE) ? 1 : 0; + } else { + convert_to_string(value); + if (php_session_start_set_ini(str_idx, Z_STR_P(value)) == FAILURE) { + php_error_docref(NULL, E_WARNING, "Setting option '%s' failed", str_idx->val); + } } - } - break; - default: - php_error_docref(NULL, E_WARNING, "Option(%s) value must be string, boolean or long", str_idx->val); - break; + break; + default: + php_error_docref(NULL, E_WARNING, "Option(%s) value must be string, boolean or long", str_idx->val); + break; + } } } ZEND_HASH_FOREACH_END(); }