com php-src: Re-fixed Bug #66481 (Calls to session_name() segfault when session.name is null): NEWS ext/session/session.c ext/session/tests/bug66481
.phpt
| From: | Xinchen Hui | Date: | Thu, 16 Jan 2014 06:41:12 +0000 |
| Subject: | com php-src: Re-fixed Bug #66481 (Calls to session_name() segfault when session.name is null): NEWS ext/session/session.c ext/session/tests/bug66481 .phpt |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-75646@lists.php.net to get a copy of this message | ||
Commit: b777248ded69289b84d645ba2f36dbc207c77ff7
Author: Xinchen Hui <laruence@php.net> Thu, 16 Jan 2014 14:41:12 +0800
Parents: 271053ad470e4b7f0e1eb46dfc1a4369d5c7baa2
Branches: PHP-5.4 PHP-5.5 PHP-5.6 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=b777248ded69289b84d645ba2f36dbc207c77ff7
Log:
Re-fixed Bug #66481 (Calls to session_name() segfault when session.name is null)
Bugs:
https://bugs.php.net/66481
Changed paths:
M NEWS
M ext/session/session.c
A ext/session/tests/bug66481.phpt
Diff:
diff --git a/NEWS b/NEWS
index cffe5ae..81f88bf 100644
--- a/NEWS
+++ b/NEWS
@@ -5,6 +5,10 @@ PHP NEWS
- Core:
. Fixed bug #66286 (Incorrect object comparison with inheritance). (Nikita)
+- Session:
+ . Fixed bug #66481 (Calls to session_name() segfault when session.name is
+ null). (Laruence)
+
?? ??? 2013, PHP 5.4.24
- Core:
diff --git a/ext/session/session.c b/ext/session/session.c
index 35db50a..5b03d63 100644
--- a/ext/session/session.c
+++ b/ext/session/session.c
@@ -618,11 +618,10 @@ static PHP_INI_MH(OnUpdateSaveDir) /* {{{ */
static PHP_INI_MH(OnUpdateName) /* {{{ */
{
/* Numeric session.name won't work at all */
- if (PG(modules_activated) &&
- (!new_value_length || is_numeric_string(new_value, new_value_length, NULL, NULL, 0))) {
+ if ((!new_value_length || is_numeric_string(new_value, new_value_length, NULL, NULL, 0))) {
int err_type;
- if (stage == ZEND_INI_STAGE_RUNTIME) {
+ if (stage == ZEND_INI_STAGE_RUNTIME || stage == ZEND_INI_STAGE_ACTIVATE || stage ==
ZEND_INI_STAGE_STARTUP) {
err_type = E_WARNING;
} else {
err_type = E_ERROR;
diff --git a/ext/session/tests/bug66481.phpt b/ext/session/tests/bug66481.phpt
new file mode 100644
index 0000000..cf6ad6a
--- /dev/null
+++ b/ext/session/tests/bug66481.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Bug #66481: Calls to session_name() segfault when session.name is null.
+--INI--
+session.name=
+--SKIPIF--
+<?php include('skipif.inc'); ?>
+--FILE--
+<?php
+
+var_dump(session_name("foo"));
+var_dump(session_name("bar"));
+--EXPECTF--
+PHP Warning: PHP Startup: session.name cannot be a numeric or empty '' in Unknown on
line 0
+
+Warning: PHP Startup: session.name cannot be a numeric or empty '' in Unknown on line 0
+string(9) "PHPSESSID"
+string(3) "foo"