com php-src: Fixed #67694: Regression in session_regenerate _id(): NEWS ext/session/session.c ext/session/t ests/bug67694.phpt
| From: | Tjerk Anne Meesters | Date: | Sat, 23 Aug 2014 01:18:02 +0000 |
| Subject: | com php-src: Fixed #67694: Regression in session_regenerate _id(): NEWS ext/session/session.c ext/session/t ests/bug67694.phpt | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-80832@lists.php.net to get a copy of this message | ||
Commit: ce9bdae33f101ff85c08d32ce5c2c6502a451d62
Author: Tjerk Meesters <datibbaw@php.net> Sat, 23 Aug 2014 09:18:02 +0800
Parents: 3b82c4e52063e74abaca637811629b521754de3d
Branches: PHP-5.6 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=ce9bdae33f101ff85c08d32ce5c2c6502a451d62
Log:
Fixed #67694: Regression in session_regenerate_id()
Bugs:
https://bugs.php.net/67694
Changed paths:
M NEWS
M ext/session/session.c
A ext/session/tests/bug67694.phpt
Diff:
diff --git a/NEWS b/NEWS
index 70780ce..ad21933 100644
--- a/NEWS
+++ b/NEWS
@@ -16,6 +16,9 @@ PHP NEWS
- Zlib:
. Fixed bug #67865 (internal corruption phar error). Mike
+- Session:
+ . Fixed bug #67694 (Regression in session_regenerate_id()). (Tjerk)
+
14 Aug 2014, PHP 5.6.0 Release Candidate 4
- COM:
diff --git a/ext/session/session.c b/ext/session/session.c
index d1a7a07..d440e6f 100644
--- a/ext/session/session.c
+++ b/ext/session/session.c
@@ -1994,7 +1994,7 @@ static PHP_FUNCTION(session_regenerate_id)
RETURN_FALSE;
}
efree(PS(id));
- PS(id) = NULL;
+ memset(PS(session_data_hash),'\0', 16);
}
PS(id) = PS(mod)->s_create_sid(&PS(mod_data), NULL TSRMLS_CC);
diff --git a/ext/session/tests/bug67694.phpt b/ext/session/tests/bug67694.phpt
new file mode 100644
index 0000000..08a2969
--- /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)