com php-src: Strict session. Detect session id collision: ext/session/mod_files.c ext/session/mod_mm.c

From: Date: Sun, 04 Aug 2013 23:36:53 +0000
Subject: com php-src: Strict session. Detect session id collision: ext/session/mod_files.c ext/session/mod_mm.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-72829@lists.php.net to get a copy of this message
Commit: 82b0e8be99065b61b622df21bbc7494d2fbca3cd Author: Yasuo Ohgaki <yohgaki@php.net> Tue, 25 Jun 2013 20:09:10 +0900 Committer: Stanislav Malyshev <stas@php.net> Sun, 4 Aug 2013 16:36:53 -0700 Parents: 25e8fcc88fa20dc9d4c47184471003f436927cde Branches: PHP-5.5 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=82b0e8be99065b61b622df21bbc7494d2fbca3cd Log: Strict session. Detect session id collision Changed paths: M ext/session/mod_files.c M ext/session/mod_mm.c Diff: diff --git a/ext/session/mod_files.c b/ext/session/mod_files.c index e9dc25a..6beee09 100644 --- a/ext/session/mod_files.c +++ b/ext/session/mod_files.c @@ -459,9 +459,22 @@ PS_GC_FUNC(files) PS_CREATE_SID_FUNC(files) { char *sid; + int maxfail = 3; PS_FILES_DATA; - sid = php_session_create_id((void **)&data, newlen TSRMLS_CC); + do { + sid = php_session_create_id((void **)&data, newlen TSRMLS_CC); + /* Check collision */ + if (ps_files_key_exists(data, sid TSRMLS_CC) == SUCCESS) { + if (sid) { + efree(sid); + sid = NULL; + } + if (!(maxfail--)) { + return NULL; + } + } + } while(!sid); return sid; } diff --git a/ext/session/mod_mm.c b/ext/session/mod_mm.c index 7ca9083..69c0da7 100644 --- a/ext/session/mod_mm.c +++ b/ext/session/mod_mm.c @@ -479,9 +479,22 @@ PS_GC_FUNC(mm) PS_CREATE_SID_FUNC(mm) { char *sid; + int maxfail = 3; PS_MM_DATA; - sid = php_session_create_id((void **)&data, newlen TSRMLS_CC); + do { + sid = php_session_create_id((void **)&data, newlen TSRMLS_CC); + /* Check collision */ + if (ps_mm_key_exists(data, sid TSRMLS_CC) == SUCCESS) { + if (sid) { + efree(sid); + sid = NULL; + } + if (!(maxfail--)) { + return NULL; + } + } + } while(!sid); return sid; }

« previous php.cvs (#72829) next »