]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-5.6'
authorYasuo Ohgaki <yohgaki@php.net>
Thu, 6 Nov 2014 04:49:43 +0000 (13:49 +0900)
committerYasuo Ohgaki <yohgaki@php.net>
Thu, 6 Nov 2014 04:49:43 +0000 (13:49 +0900)
* PHP-5.6:
  Fixed bug #68331 - This was partial patch for https://wiki.php.net/rfc/session-lock-ini
  Fixed 2 tests that expects bool retrun value from save handler.

Conflicts:
ext/session/session.c

1  2 
ext/session/session.c
ext/session/tests/session_set_save_handler_iface_003.phpt
ext/session/tests/session_set_save_handler_sid_001.phpt

index dae965b048145b272264de300e724f87233e1da2,edc8f15d5bd973e4c95fcbe5925783d17daf7a98..8d112c3a187141bab6202e0dae9023f2af90b40e
@@@ -506,17 -514,8 +506,8 @@@ static void php_session_initialize(TSRM
                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->val, val->len);
-               PHP_MD5Final(PS(session_data_hash), &context);
 -              php_session_decode(val, vallen TSRMLS_CC);
 -              str_efree(val);
 +              php_session_decode(val->val, val->len TSRMLS_CC);
 +              zend_string_release(val);
-       } else {
-               memset(PS(session_data_hash),'\0', 16);
        }
  
        if (!PS(use_cookies) && PS(send_cookie)) {
@@@ -534,26 -533,22 +525,14 @@@ static void php_session_save_current_st
  
        IF_SESSION_VARS() {
                if (PS(mod_data) || PS(mod_user_implemented)) {
 -                      char *val;
 -                      int vallen;
 +                      zend_string *val;
  
 -                      val = php_session_encode(&vallen TSRMLS_CC);
 +                      val = php_session_encode(TSRMLS_C);
                        if (val) {
--                              PHP_MD5_CTX context;
--                              unsigned char digest[16];
--
--                              /* Generate data's MD5 hash */
--                              PHP_MD5Init(&context);
-                               PHP_MD5Update(&context, val->val, val->len);
 -                              PHP_MD5Update(&context, val, vallen);
--                              PHP_MD5Final(digest, &context);
-                               /* Write only when save is required */
-                               if (memcmp(digest, PS(session_data_hash), 16)) {
-                                       ret = PS(mod)->s_write(&PS(mod_data), PS(id), val TSRMLS_CC);
-                               } else {
-                                       ret = SUCCESS;
-                               }
 -                              ret = PS(mod)->s_write(&PS(mod_data), PS(id), val, vallen TSRMLS_CC);
 -                              efree(val);
++                              ret = PS(mod)->s_write(&PS(mod_data), PS(id), val TSRMLS_CC);
 +                              zend_string_release(val);
                        } else {
 -                              ret = PS(mod)->s_write(&PS(mod_data), PS(id), "", 0 TSRMLS_CC);
 +                              ret = PS(mod)->s_write(&PS(mod_data), PS(id), STR_EMPTY_ALLOC() TSRMLS_CC);
                        }
                }
  
@@@ -1970,11 -1979,10 +1949,10 @@@ static PHP_FUNCTION(session_regenerate_
                                php_error_docref(NULL TSRMLS_CC, E_WARNING, "Session object destruction failed");
                                RETURN_FALSE;
                        }
 -                      efree(PS(id));
 +                      zend_string_release(PS(id));
-                       memset(PS(session_data_hash),'\0', 16);
                }
  
 -              PS(id) = PS(mod)->s_create_sid(&PS(mod_data), NULL TSRMLS_CC);
 +              PS(id) = PS(mod)->s_create_sid(&PS(mod_data) TSRMLS_CC);
                if (PS(id)) {
                        PS(send_cookie) = 1;
                        php_session_reset_id(TSRMLS_C);
index bd757dce630b1c1ac6ccbc150eac3c2632321275,bd757dce630b1c1ac6ccbc150eac3c2632321275..4d7ed3b7ee21c2962bca5f205061fd934aa275fc
@@@ -38,7 -38,7 +38,8 @@@ class MySession2 implements SessionHand
        }
  
        public function write($id, $data) {
--              return file_put_contents($this->path . $id, $data);
++              // Empty $data = 0 = false
++              return (bool)file_put_contents($this->path . $id, $data);
        }
  
        public function destroy($id) {
index 0dc4fc11cf0ca06dafd3d18653bb5eb680a339ac,0dc4fc11cf0ca06dafd3d18653bb5eb680a339ac..24ba5d7489a1673ea0edb2fce131955a4bab8901
@@@ -32,7 -32,7 +32,8 @@@ class MySession2 
        }
  
        public function write($id, $data) {
--              return file_put_contents($this->path . $id, $data);
++              // Empty $data = 0 = false
++              return (bool)file_put_contents($this->path . $id, $data);
        }
  
        public function destroy($id) {