diff options
author | Scott MacVicar <scottmac@php.net> | 2008-09-18 11:59:13 +0000 |
---|---|---|
committer | Scott MacVicar <scottmac@php.net> | 2008-09-18 11:59:13 +0000 |
commit | d875c9f889a92e7a435527958de96498fa1c3133 (patch) | |
tree | 330bd803112660bf1a341cefcd2517bd519fa6aa /ext/hash | |
parent | 766ad69755c67cceb50b4ab581b9262be4002f4b (diff) | |
download | php-git-d875c9f889a92e7a435527958de96498fa1c3133.tar.gz |
MFH: mhash algorithm parameter was modified when it was a zval, also update a test.
Diffstat (limited to 'ext/hash')
-rw-r--r-- | ext/hash/hash.c | 12 | ||||
-rw-r--r-- | ext/hash/tests/mhash_001.phpt | 2 | ||||
-rw-r--r-- | ext/hash/tests/mhash_004.phpt | 21 |
3 files changed, 29 insertions, 6 deletions
diff --git a/ext/hash/hash.c b/ext/hash/hash.c index 6d7c33b035..ce333f2ed9 100644 --- a/ext/hash/hash.c +++ b/ext/hash/hash.c @@ -626,20 +626,22 @@ static void mhash_init(INIT_FUNC_ARGS) 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); } } diff --git a/ext/hash/tests/mhash_001.phpt b/ext/hash/tests/mhash_001.phpt index 2d40e68d64..f70ebaf8ff 100644 --- a/ext/hash/tests/mhash_001.phpt +++ b/ext/hash/tests/mhash_001.phpt @@ -33,7 +33,7 @@ foreach ($supported_hash_al as $hash=>$wanted) { echo "$hash: "; var_dump($wanted); echo "$hash: "; - var_dump($result); + var_dump(bin2hex($result)); } echo "\n"; } diff --git a/ext/hash/tests/mhash_004.phpt b/ext/hash/tests/mhash_004.phpt new file mode 100644 index 0000000000..2721663332 --- /dev/null +++ b/ext/hash/tests/mhash_004.phpt @@ -0,0 +1,21 @@ +--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) |