mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Strict session. Detect session id collision
This commit is contained in:
parent
25e8fcc88f
commit
82b0e8be99
2 changed files with 28 additions and 2 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue