Bug #62129 [Opn->Asn]: rfc1867 crashes php even though turned off

From: Date: Thu, 24 May 2012 10:17:04 +0000
Subject: Bug #62129 [Opn->Asn]: rfc1867 crashes php even though turned off
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-170764@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=62129&edit=1

 ID:                 62129
 Updated by:         johannes@php.net
 Reported by:        truth at proposaltech dot com
 Summary:            rfc1867 crashes php even though turned off
-Status:             Open
+Status:             Assigned
 Type:               Bug
 Package:            Session related
 Operating System:   CentOS
 PHP Version:        5.4.3
-Assigned To:        
+Assigned To:        iliaa
 Block user comment: N
 Private report:     N



Previous Comments:
------------------------------------------------------------------------
[2012-05-24 01:45:19] laruence@php.net

yes, the codes seems suspicious,  maybe iliaa can look into this :)

diff --git a/ext/session/session.c b/ext/session/session.c
index 7a8199d..851e4ea 100644
--- a/ext/session/session.c
+++ b/ext/session/session.c
@@ -2384,13 +2384,14 @@ static int php_session_rfc1867_callback(unsigned int 
event, void *event_data, vo
 	php_session_rfc1867_progress *progress;
 	int retval = SUCCESS;
 
-	if (php_session_rfc1867_orig_callback) {
-		retval = php_session_rfc1867_orig_callback(event, event_data, 
extra TSRMLS_CC);
-	}
 	if (!PS(rfc1867_enabled)) {
 		return retval;
 	}
 
+	if (php_session_rfc1867_orig_callback) {
+		retval = php_session_rfc1867_orig_callback(event, event_data, 
extra TSRMLS_CC);
+	}
+
 	progress = PS(rfc1867_progress);
 
 	switch(event) {

------------------------------------------------------------------------
[2012-05-23 18:16:01] truth at proposaltech dot com

Description:
------------
php_session_rfc1867_callback() tries to call php_session_rfc1867_orig_callback() even if the rfc1867
feature is not enabled.  Switching the order of the opening "if" blocks fixes the problem.
 (The second "if" block immediately returns success if the feature isn't enabled and
the first "if" block tries to call the callback.  This is all around line 2388 of
session.c.)

I upgraded from 5.3.3 to 5.4.3 and apache was segfaulting.  I produced a core and the debugger
showed infinite recursion in php_session_rfc1867_callback().  There are probably deeper problems
here, but at the least the feature shouldn't cause problems if it is turned off.

In any case, even if something about my configuration is less than ideal, seg faults are Bad Thing.

Test script:
---------------
Apparently, my code wasn't executed.  I tried using Xdebug, but it didn't report anything.
 dump_bt didn't return anything in the debugger.

Expected result:
----------------
I expected my code to be executed normally.

Actual result:
--------------
apache seg faulted


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=62129&edit=1


Thread (10 messages)

« previous php.bugs (#170764) next »