]> granicus.if.org Git - php/commitdiff
Fixed Bug #65315 session.hash_function silently fallback to default md5
authorYasuo Ohgaki <yohgaki@php.net>
Fri, 9 Aug 2013 09:05:07 +0000 (18:05 +0900)
committerYasuo Ohgaki <yohgaki@php.net>
Fri, 9 Aug 2013 09:05:24 +0000 (18:05 +0900)
NEWS
ext/session/session.c
ext/session/tests/session_hash_function_basic.phpt [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index c679b90a65369bff3fe830c252895f645d1f9044..02fa05ede8d81fb5624a093dd95a435d79fe1e26 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -7,6 +7,10 @@ PHP                                                                        NEWS
   . Implemented internal operator overloading
     (RFC: https://wiki.php.net/rfc/operator_overloading_gmp). (Nikita)
 
+- Session:
+  . Fixed Bug #65315 (session.hash_function silently fallback to default md5)
+    (Yasuo)
+
 - mysqlnd:
   . Disabled flag for SP OUT variables for 5.5+ servers as they are not natively
     supported by the overlying APIs. (Andrey)
index c02a10d7bffc7b8f85ea9e7dfa929d3084ed8c62..aee3308568b38b3027302698647023fd5b2d7052 100644 (file)
@@ -727,6 +727,7 @@ static PHP_INI_MH(OnUpdateHashFunc) /* {{{ */
 }
 #endif /* HAVE_HASH_EXT }}} */
 
+       php_error_docref(NULL TSRMLS_CC, E_WARNING, "session.configuration 'session.hash_function' must be existing hash function. %s does not exist.", new_value);
        return FAILURE;
 }
 /* }}} */
diff --git a/ext/session/tests/session_hash_function_basic.phpt b/ext/session/tests/session_hash_function_basic.phpt
new file mode 100644 (file)
index 0000000..8b14a88
--- /dev/null
@@ -0,0 +1,50 @@
+--TEST--
+Test session.hash_function ini setting : basic functionality
+--SKIPIF--
+<?php include('skipif.inc'); ?>
+--FILE--
+<?php
+
+ob_start();
+
+echo "*** Testing session.hash_function : basic functionality ***\n";
+
+var_dump(ini_set('session.hash_function', 'md5'));
+var_dump(session_start());
+var_dump(!empty(session_id()), session_id());
+var_dump(session_destroy());
+
+var_dump(ini_set('session.hash_function', 'sha1'));
+var_dump(session_start());
+var_dump(!empty(session_id()), session_id());
+var_dump(session_destroy());
+
+var_dump(ini_set('session.hash_function', 'none')); // Should fail
+var_dump(session_start());
+var_dump(!empty(session_id()), session_id());
+var_dump(session_destroy());
+
+
+echo "Done";
+ob_end_flush();
+?>
+--EXPECTF--
+*** Testing session.hash_function : basic functionality ***
+string(1) "0"
+bool(true)
+bool(true)
+string(32) "%s"
+bool(true)
+string(3) "md5"
+bool(true)
+bool(true)
+string(40) "%s"
+bool(true)
+
+Warning: ini_set(): session.hash_func must be existing hash function. none does not exist. in %s/session_hash_function_basic.php on line 17
+bool(false)
+bool(true)
+bool(true)
+string(40) "%s"
+bool(true)
+Done