- Changed error level E_ERROR into E_WARNING in Soap extension methods
parameter validation. (Felipe)
+- Fixed bug causing the algorithm parameter of mhash() to be modified. (Scott)
+
- Fixed bug #46106 (Memory leaks when using global statement). (Dmitry)
- Fixed bug #46099 (Xsltprocessor::setProfiling - memory leak). (Felipe, Rob).
- Fixed bug #46087 (DOMXPath - segfault on destruction of a cloned object).
PHP_FUNCTION(mhash)
{
- zval *z_algorithm;
- int algorithm;
+ zval **z_algorithm;
+ long algorithm;
- if (zend_parse_parameters(1 TSRMLS_CC, "z", &z_algorithm) == FAILURE) {
+ if (zend_parse_parameters(1 TSRMLS_CC, "Z", &z_algorithm) == FAILURE) {
return;
}
- algorithm = Z_LVAL_P(z_algorithm);
+ SEPARATE_ZVAL(z_algorithm);
+ convert_to_long_ex(z_algorithm);
+ algorithm = Z_LVAL_PP(z_algorithm);
/* need to conver the first parameter from int to string */
if (algorithm >= 0 && algorithm < MHASH_NUM_ALGOS) {
struct mhash_bc_entry algorithm_lookup = mhash_to_hash[algorithm];
if (algorithm_lookup.hash_name) {
- ZVAL_STRING(z_algorithm, algorithm_lookup.hash_name, 1);
+ ZVAL_STRING(*z_algorithm, algorithm_lookup.hash_name, 1);
}
}
--- /dev/null
+--TEST--
+mhash() modifying algorithm parameter
+--INI--
+magic_quotes_runtime=0
+--SKIPIF--
+<?php
+ include "skip_mhash.inc";
+?>
+--FILE--
+<?php
+
+$algo = MHASH_MD5;
+var_dump($algo);
+var_dump(bin2hex(mhash($algo, "test")));
+var_dump($algo);
+
+?>
+--EXPECT--
+int(1)
+string(32) "098f6bcd4621d373cade4e832627b4f6"
+int(1)