File tree 2 files changed +28
-2
lines changed
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)
459
459
PS_CREATE_SID_FUNC (files )
460
460
{
461
461
char * sid ;
462
+ int maxfail = 3 ;
462
463
PS_FILES_DATA ;
463
464
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 );
465
478
466
479
return sid ;
467
480
}
Original file line number Diff line number Diff line change @@ -479,9 +479,22 @@ PS_GC_FUNC(mm)
479
479
PS_CREATE_SID_FUNC (mm )
480
480
{
481
481
char * sid ;
482
+ int maxfail = 3 ;
482
483
PS_MM_DATA ;
483
484
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 );
485
498
486
499
return sid ;
487
500
}
You can’t perform that action at this time.
0 commit comments