diff options
author | Tjerk Meesters <datibbaw@php.net> | 2014-08-23 09:21:36 +0800 |
---|---|---|
committer | Tjerk Meesters <datibbaw@php.net> | 2014-08-23 09:21:36 +0800 |
commit | 86674b5837bffe4486714f9661620020ee498f3b (patch) | |
tree | 6d3e613976e7f3eb0dad94fcced9b6e626df7c29 | |
parent | d1d0f55e225287f3314e3eaac9c550d16e679b7e (diff) | |
parent | ce9bdae33f101ff85c08d32ce5c2c6502a451d62 (diff) | |
download | php-git-86674b5837bffe4486714f9661620020ee498f3b.tar.gz |
Merge branch 'PHP-5.6'
* PHP-5.6:
Fixed #67694: Regression in session_regenerate_id()
Conflicts:
ext/session/session.c
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | ext/session/session.c | 2 | ||||
-rw-r--r-- | ext/session/tests/bug67694.phpt | 41 |
3 files changed, 45 insertions, 1 deletions
@@ -31,4 +31,7 @@ PHP NEWS - GD: . Made fontFetch's path parser thread-safe. (Sara) +- Session: + . Fixed bug #67694 (Regression in session_regenerate_id()). (Tjerk) + <<< NOTE: Insert NEWS from last stable release here prior to actual release! >>> diff --git a/ext/session/session.c b/ext/session/session.c index 8811a08caf..8632ba493c 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -1979,7 +1979,7 @@ static PHP_FUNCTION(session_regenerate_id) RETURN_FALSE; } STR_RELEASE(PS(id)); - PS(id) = NULL; + memset(PS(session_data_hash),'\0', 16); } PS(id) = PS(mod)->s_create_sid(&PS(mod_data) TSRMLS_CC); diff --git a/ext/session/tests/bug67694.phpt b/ext/session/tests/bug67694.phpt new file mode 100644 index 0000000000..08a296923f --- /dev/null +++ b/ext/session/tests/bug67694.phpt @@ -0,0 +1,41 @@ +--TEST-- +Bug #67694 Regression in session_regenerate_id() +--INI-- +session.save_handler = files +session.name=PHPSESSID +session.auto_start = 0 +session.use_cookies = 0 +session.cache_limiter = +date.timezone = UTC +--SKIPIF-- +<?php include('skipif.inc'); ?> +--FILE-- +<?php + +$data = date('r'); + +session_start(); +$id = session_id(); +$_SESSION['init'] = $data; + +session_write_close(); + +session_id($id); +session_start(); + +session_regenerate_id(false); + +$newid = session_id(); +var_dump($newid != $id); + +session_write_close(); + +unset($_SESSION); + +session_id($newid); +session_start(); + +var_dump(isset($_SESSION['init']) && $data == $_SESSION['init']); +--EXPECT-- +bool(true) +bool(true) |