]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-5.5' into PHP-5.6
authorYasuo Ohgaki <yohgaki@php.net>
Wed, 15 Jan 2014 02:07:10 +0000 (11:07 +0900)
committerYasuo Ohgaki <yohgaki@php.net>
Wed, 15 Jan 2014 02:07:10 +0000 (11:07 +0900)
* PHP-5.5:
  Fixed session module is sending multiple set-cookie headers when session.use_strict_mode=1

1  2 
ext/session/session.c

index 7a5254f8a982ad6f567343c49191cf521c732958,c1bdf83633fb1fb57480989e4c83e23b23393549..cffdabb7b7fc232987eeba57be0be277ef0afe90
@@@ -504,18 -507,14 +507,23 @@@ static void php_session_initialize(TSRM
                php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Failed to read session data: %s (path: %s)", PS(mod)->s_name, PS(save_path));
                */
        }
+       /* Set session ID if session read didn't activated session */
+       if (PS(use_strict_mode) && PS(session_status) != php_session_active) {
+               php_session_reset_id(TSRMLS_C);
+               PS(session_status) = php_session_active;
+       }
        if (val) {
 +              PHP_MD5_CTX context;
 +
 +              /* Store read data's MD5 hash */
 +              PHP_MD5Init(&context);
 +              PHP_MD5Update(&context, val, vallen);
 +              PHP_MD5Final(PS(session_data_hash), &context);
 +
                php_session_decode(val, vallen TSRMLS_CC);
 -              efree(val);
 +              str_efree(val);
 +      } else {
 +              memset(PS(session_data_hash),'\0', 16);
        }
  
        if (!PS(use_cookies) && PS(send_cookie)) {