diff --git a/ext/session/session.c b/ext/session/session.c index b838b132b16d0..b261f9a35594a 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -1479,7 +1479,7 @@ PHPAPI zend_result php_session_reset_id(void) /* {{{ */ smart_str_appends(&var, ZSTR_VAL(PS(id))); smart_str_0(&var); if (sid) { - zval_ptr_dtor_str(sid); + zval_ptr_dtor(sid); ZVAL_STR(sid, smart_str_extract(&var)); } else { REGISTER_STRINGL_CONSTANT("SID", ZSTR_VAL(var.s), ZSTR_LEN(var.s), 0); @@ -1487,7 +1487,7 @@ PHPAPI zend_result php_session_reset_id(void) /* {{{ */ } } else { if (sid) { - zval_ptr_dtor_str(sid); + zval_ptr_dtor(sid); ZVAL_EMPTY_STRING(sid); } else { REGISTER_STRINGL_CONSTANT("SID", "", 0, 0); diff --git a/ext/session/tests/SID_type_confusion.phpt b/ext/session/tests/SID_type_confusion.phpt new file mode 100644 index 0000000000000..837f0784d40ef --- /dev/null +++ b/ext/session/tests/SID_type_confusion.phpt @@ -0,0 +1,19 @@ +--TEST-- +SID constant type confusion +--EXTENSIONS-- +session +--SKIPIF-- + +--INI-- +session.use_cookies=0 +session.use_only_cookies=1 +--FILE-- + +--EXPECT-- +string(0) ""