From: Yasuo Ohgaki Date: Thu, 6 Nov 2014 04:49:43 +0000 (+0900) Subject: Merge branch 'PHP-5.6' X-Git-Tag: PRE_PHP7_REMOVALS~79 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6b8328de740ce0bc116f322be5193b6b7b83927f;p=php Merge branch 'PHP-5.6' * 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 --- 6b8328de740ce0bc116f322be5193b6b7b83927f diff --cc ext/session/session.c index dae965b048,edc8f15d5b..8d112c3a18 --- a/ext/session/session.c +++ b/ext/session/session.c @@@ -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); diff --cc ext/session/tests/session_set_save_handler_iface_003.phpt index bd757dce63,bd757dce63..4d7ed3b7ee --- a/ext/session/tests/session_set_save_handler_iface_003.phpt +++ b/ext/session/tests/session_set_save_handler_iface_003.phpt @@@ -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) { diff --cc ext/session/tests/session_set_save_handler_sid_001.phpt index 0dc4fc11cf,0dc4fc11cf..24ba5d7489 --- a/ext/session/tests/session_set_save_handler_sid_001.phpt +++ b/ext/session/tests/session_set_save_handler_sid_001.phpt @@@ -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) {