File tree Expand file tree Collapse file tree 2 files changed +28
-2
lines changed Expand file tree Collapse file tree 2 files changed +28
-2
lines changed Original file line number Diff line number Diff line change @@ -459,9 +459,22 @@ PS_GC_FUNC(files)
459459PS_CREATE_SID_FUNC (files )
460460{
461461 char * sid ;
462+ int maxfail = 3 ;
462463 PS_FILES_DATA ;
463464
464- sid = php_session_create_id ((void * * )& data , newlen TSRMLS_CC );
465+ do {
466+ sid = php_session_create_id ((void * * )& data , newlen TSRMLS_CC );
467+ /* Check collision */
468+ if (ps_files_key_exists (data , sid TSRMLS_CC ) == SUCCESS ) {
469+ if (sid ) {
470+ efree (sid );
471+ sid = NULL ;
472+ }
473+ if (!(maxfail -- )) {
474+ return NULL ;
475+ }
476+ }
477+ } while (!sid );
465478
466479 return sid ;
467480}
Original file line number Diff line number Diff line change @@ -479,9 +479,22 @@ PS_GC_FUNC(mm)
479479PS_CREATE_SID_FUNC (mm )
480480{
481481 char * sid ;
482+ int maxfail = 3 ;
482483 PS_MM_DATA ;
483484
484- sid = php_session_create_id ((void * * )& data , newlen TSRMLS_CC );
485+ do {
486+ sid = php_session_create_id ((void * * )& data , newlen TSRMLS_CC );
487+ /* Check collision */
488+ if (ps_mm_key_exists (data , sid TSRMLS_CC ) == SUCCESS ) {
489+ if (sid ) {
490+ efree (sid );
491+ sid = NULL ;
492+ }
493+ if (!(maxfail -- )) {
494+ return NULL ;
495+ }
496+ }
497+ } while (!sid );
485498
486499 return sid ;
487500}
You can’t perform that action at this time.
0 commit comments