1
0
mirror of https://github.com/php/php-src.git synced 2026-03-26 17:22:15 +01:00

Fixed crash

This commit is contained in:
Yasuo Ohgaki
2015-01-28 08:03:37 +09:00
parent b45872c2ec
commit feeaaa4c3f

View File

@@ -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();
}