Hi,

i have found a great problem (but small fix) with the generation of
sessions when register_globals=off. this is also described in bug #8772.
this bug is in 4.0.4 and 4.0.4pl1, but i have not checked the lastest cvs.

the problem in ext/session/session.c is, that the session data of a new
session is never written to disk, because http_session_vars is null when
calling php_session_save_current_state().

my research shows the following:
- http_session_vars is inititialized in function php_session_track_init()
- php_session_track_init() is only called from php_session_decode()
- php_session_decode() is used if you call session_decode() or in
php_session_inititialize() but only if PS(mod)->read() return SUCCESS.
this condition is not true if we have generated a new session, so the
function php_session_track_init() is never called.

my proposed patch is

--- session.orig.c      Mon Jan 29 19:13:27 2001
+++ session.c   Mon Jan 29 19:17:16 2001
@@ -583,6 +583,8 @@
        if (PS(mod)->read(&PS(mod_data), PS(id), &val, &vallen) ==
SUCCESS) {
                php_session_decode(val, vallen PSLS_CC);
                efree(val);
+       } else {
+         php_session_track_init();
        }
 }

regards marc



Marc Pohl
WWF Wort + Ton GmbH
Bereich e-media

Tel. 0221 6900 112
Fax. 0221 6900 150
http://www.wwf-gruppe.de/



-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to