php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #9264 Using session_encode with user-level session storage functions causes a crash
Submitted: 2001-02-14 12:39 UTC Modified: 2001-09-22 12:24 UTC
From: lolo at phpheaven dot net Assigned:
Status: Closed Package: Session related
PHP Version: 4.0 Latest CVS (14/02/2001) OS: win98 SE
Private report: No CVE-ID: None
 [2001-02-14 12:39 UTC] lolo at phpheaven dot net
Hi!

Be indulgent for my poorly english level please...

To force session data to be saved when using a database based session storage system and 'register_globals' is set to off I've build this (very) simplified structure of script:

function dbSessionClose()
{
    return true;
}

function dbSessionRead($id)
{
    return true;
}

function dbSessionWrite($id, $data)
{
    return true;
}

function dbSessionDestroy($id)
{
    return true;
}

function dbSessionGarbageCollector($sessionLifeTime)
{
    return true;
}

function dbSessionSave()
{
    return dbSessionWrite(session_id(), session_encode());  // The note below is about this line
}

session_set_save_handler('dbSessionOpen', 'dbSessionClose', 'dbSessionRead', 'dbSessionWrite', 'dbSessionDestroy', 'dbSessionGarbageCollector');


/**
 * Uses session
 */
session_start();
session_register('myVar');

$myVar = 'crash';

dbSessionSave();


Then each time I run it with the latest PHP 4.0.5dev loaded as an apache module, PHP crash and produces this error:

APACHE a caus? une d?faillance de page dans
 le module PHP4TS.DLL ? 016f:008a533e.
Registres :
EAX=00000000 CS=016f EIP=008a533e EFLGS=00010246
EBX=00000000 SS=0177 ESP=01e2f274 EBP=007f7df0
ECX=007ee7a0 DS=0177 ESI=007ee164 FS=2217
EDX=007ee130 ES=0177 EDI=007f7c46 GS=0000
Octets ? CS : EIP :
8b 00 8b 4c 24 0c 8b 54 24 08 51 8b 4c 24 08 42 
?tat de la pile :
008a57b4 007f7c40 00000005 01e2f2a4 007ee7a0 007ee130 007dd720 00000001 00000000 007dd720 007f7b10 007f7c40 00000000 00000000 007ee7a0 007dd720


An amazing note: if...
- ... at the first run I replace the call to the session_encode() function by the string 'crash', fire the script...
- ... then resume to the original 'dbSessionSave()' function and run the script again...
... everything go right!

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-02-15 11:05 UTC] lolo at phpheaven dot net
Oups, in the code before I omited to put the 'open session' function. Here it is:

function dbSessionOpen($savePath, $sessionName)
{
    return true;
}

 [2001-03-17 12:08 UTC] lolo at phpheaven dot net
Hi!

I've done a test with the new php4.0.5-RC1 from php4win.de and the crash still occurs.

Regards,
Lo?c
 [2001-06-14 23:21 UTC] sniper@php.net
Does this happen with latest CVS snapshot build from
http://www.zend.com/snapshots/ ??


 [2001-06-15 13:33 UTC] lolo at phpheaven dot net
Hi sniper and all!

Well, it's not easy to send you an accurate reply because zend snapshots for win32 does not contain the Apache module.

BTW, Ive done some testings:
- with php4.07-dev from php4win.de the script still crashes Apache with php loaded as a gci or as an Apache module;
- with the latest snapshot from zend.com (cgi only), it runs :)

If someone can build the Apache module (I can't do it, sorry :() I may do some more tests.

Thanks for your attention,
Lo?c
 [2001-06-23 05:06 UTC] lolo at phpheaven dot net
Hi All!

I've just done some testings with the new php4.06 release and the crash is still here with:
- php loaded as a cgi or as an Apache module,
- php.ini = the optimized one (without any extension).

Regards,
Lo?c  
 [2001-06-23 17:22 UTC] sbergmann@php.net
Can't reproduce this with either PHP 4.0.5 or PHP 4.0.7-dev on Win32.

 [2001-06-24 05:21 UTC] lolo at phpheaven dot net
Hi !

Sorry to bother you with this bug report you closed yesterday but I think the bug does exist and it's not related to my config because I can reproduce it with all php releases > 4.01 except with the latest snapshots from Zend.

I've done some deep testings this night to understand what could be the reason for the crash and I've noticed that one must have set the 'register_globals' directive to off to face it (wathever is the way php is loaded by Apache and whatever are the extensions loaded).

Please ignore this post if you don't have enough time to test bugs reports again and again: I can wait the next php4.07 package.

Have a nice and shinny week-end,
Lo?c Chapeaux
 [2001-06-24 08:42 UTC] sniper@php.net
Reopened. I can reproduce this with PHP 4.0.6:

register_globals=On  ; No crash
register_globasl=Off ; Kaboom!


 [2001-09-22 12:22 UTC] lolo at phpheaven dot net
Hi!

This bug seems to be fixed in the 4.0.8-dev version from the current cvs.

Regards,
Lo?c
 [2001-09-22 12:24 UTC] derick@php.net
User reported that it's fixed in 4.0.8dev
 
PHP Copyright © 2001-2022 The PHP Group
All rights reserved.
Last updated: Fri Dec 09 02:05:54 2022 UTC