From 5b12b46a19bc37d073c4ac32e62fbe823f786e09 Mon Sep 17 00:00:00 2001 From: Sergei Morozov Date: Mon, 17 Jul 2017 12:39:34 +0300 Subject: [PATCH] Fixed bug #74936 - session_*() functions trigger a warning in read mode when the session is active --- NEWS | 5 +++++ ext/session/session.c | 6 +++--- ext/session/tests/bug74936.phpt | 20 +++++++++++++++++++ .../tests/session_cache_expire_basic.phpt | 2 -- .../session_cache_expire_variation1.phpt | 2 -- .../session_cache_expire_variation2.phpt | 2 -- .../session_cache_expire_variation3.phpt | 2 -- .../session_cache_limiter_variation1.phpt | 8 ++------ .../session_cache_limiter_variation2.phpt | 8 ++------ .../tests/session_save_path_variation1.phpt | 8 ++------ 10 files changed, 34 insertions(+), 29 deletions(-) create mode 100644 ext/session/tests/bug74936.phpt diff --git a/NEWS b/NEWS index fe44c45b17..7ef1302edc 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,11 @@ PHP NEWS - Session: . Fixed bug #74892 (Url Rewriting (trans_sid) not working on urls that start with "#"). (Andrew Nester) + . Fixed bug #74936 (session_cache_expire/cache_limiter/save_path() trigger a + warning in read mode). (morozov) + +- SPL: + . Fixed bug #74669 (Unserialize ArrayIterator broken). (Andrew Nester) 20 Jul 2017, PHP 7.2.0beta1 diff --git a/ext/session/session.c b/ext/session/session.c index 70f56a3ade..1e8321d1ac 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -1999,7 +1999,7 @@ static PHP_FUNCTION(session_save_path) return; } - if (PS(session_status) == php_session_active) { + if (name && PS(session_status) == php_session_active) { php_error_docref(NULL, E_WARNING, "Cannot change save path when session is active"); RETURN_FALSE; } @@ -2227,7 +2227,7 @@ static PHP_FUNCTION(session_cache_limiter) return; } - if (PS(session_status) == php_session_active) { + if (limiter && PS(session_status) == php_session_active) { php_error_docref(NULL, E_WARNING, "Cannot change cache limiter when session is active"); RETURN_FALSE; } @@ -2258,7 +2258,7 @@ static PHP_FUNCTION(session_cache_expire) return; } - if (PS(session_status) == php_session_active) { + if (expires && PS(session_status) == php_session_active) { php_error_docref(NULL, E_WARNING, "Cannot change cache expire when session is active"); RETURN_LONG(PS(cache_expire)); } diff --git a/ext/session/tests/bug74936.phpt b/ext/session/tests/bug74936.phpt new file mode 100644 index 0000000000..aee7493c6c --- /dev/null +++ b/ext/session/tests/bug74936.phpt @@ -0,0 +1,20 @@ +--TEST-- +Bug #74936 session_cache_expire() triggers a warning in read mode. +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +int(180) +string(7) "nocache" +string(0) "" +===DONE=== diff --git a/ext/session/tests/session_cache_expire_basic.phpt b/ext/session/tests/session_cache_expire_basic.phpt index fb240006e7..7166485937 100644 --- a/ext/session/tests/session_cache_expire_basic.phpt +++ b/ext/session/tests/session_cache_expire_basic.phpt @@ -32,8 +32,6 @@ int(180) int(180) int(1234567890) bool(true) - -Warning: session_cache_expire(): Cannot change cache expire when session is active in %s on line 17 int(180) bool(true) int(180) diff --git a/ext/session/tests/session_cache_expire_variation1.phpt b/ext/session/tests/session_cache_expire_variation1.phpt index 1a7324935f..9d0ba27fea 100644 --- a/ext/session/tests/session_cache_expire_variation1.phpt +++ b/ext/session/tests/session_cache_expire_variation1.phpt @@ -34,8 +34,6 @@ int(360) int(360) int(1234567890) bool(true) - -Warning: session_cache_expire(): Cannot change cache expire when session is active in %s on line 17 int(180) bool(true) int(180) diff --git a/ext/session/tests/session_cache_expire_variation2.phpt b/ext/session/tests/session_cache_expire_variation2.phpt index c3daae6c55..f17f4711a9 100644 --- a/ext/session/tests/session_cache_expire_variation2.phpt +++ b/ext/session/tests/session_cache_expire_variation2.phpt @@ -33,8 +33,6 @@ int(360) int(360) int(1234567890) bool(true) - -Warning: session_cache_expire(): Cannot change cache expire when session is active in %s on line 18 int(180) bool(true) int(180) diff --git a/ext/session/tests/session_cache_expire_variation3.phpt b/ext/session/tests/session_cache_expire_variation3.phpt index d9f78df491..c243c1f115 100644 --- a/ext/session/tests/session_cache_expire_variation3.phpt +++ b/ext/session/tests/session_cache_expire_variation3.phpt @@ -38,8 +38,6 @@ string(3) "180" int(180) string(10) "1234567890" bool(true) - -Warning: session_cache_expire(): Cannot change cache expire when session is active in %s on line 19 int(1234567890) string(10) "1234567890" bool(true) diff --git a/ext/session/tests/session_cache_limiter_variation1.phpt b/ext/session/tests/session_cache_limiter_variation1.phpt index 7ba621120d..5af208a909 100644 --- a/ext/session/tests/session_cache_limiter_variation1.phpt +++ b/ext/session/tests/session_cache_limiter_variation1.phpt @@ -32,15 +32,11 @@ ob_end_flush(); *** Testing session_cache_limiter() : variation *** string(7) "nocache" bool(true) - -Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 15 -bool(false) +string(7) "nocache" Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 16 bool(false) - -Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 17 -bool(false) +string(7) "nocache" bool(true) string(7) "nocache" Done diff --git a/ext/session/tests/session_cache_limiter_variation2.phpt b/ext/session/tests/session_cache_limiter_variation2.phpt index 94571017e1..eb63d99dac 100644 --- a/ext/session/tests/session_cache_limiter_variation2.phpt +++ b/ext/session/tests/session_cache_limiter_variation2.phpt @@ -31,15 +31,11 @@ ob_end_flush(); *** Testing session_cache_limiter() : variation *** string(7) "nocache" bool(true) - -Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 16 -bool(false) +string(7) "nocache" Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 17 bool(false) - -Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 18 -bool(false) +string(7) "nocache" bool(true) string(7) "nocache" Done diff --git a/ext/session/tests/session_save_path_variation1.phpt b/ext/session/tests/session_save_path_variation1.phpt index 7f7130dfb0..75533c8100 100644 --- a/ext/session/tests/session_save_path_variation1.phpt +++ b/ext/session/tests/session_save_path_variation1.phpt @@ -42,15 +42,11 @@ string(0) "" string(0) "" string(%d) "%stests" bool(true) - -Warning: session_save_path(): Cannot change save path when session is active in %s on line 19 -bool(false) +string(%d) "%stests" Warning: session_save_path(): Cannot change save path when session is active in %s on line 20 bool(false) - -Warning: session_save_path(): Cannot change save path when session is active in %s on line 21 -bool(false) +string(%d) "%stests" bool(true) string(%d) "%stests" Done -- 2.40.0