com php-src: Use hash_ops->is_crypto in hash_init (): ext/hash/hash.c ext/hash/tests/bug5224 0.phpt ext/hash/tests/hash_init_error.phpt

From: Date: Sun, 22 Jan 2017 09:37:10 +0000
Subject: com php-src: Use hash_ops->is_crypto in hash_init (): ext/hash/hash.c ext/hash/tests/bug5224 0.phpt ext/hash/tests/hash_init_error.phpt
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-96836@lists.php.net to get a copy of this message
Commit: 423c192791de8f71b8f19057b64441adb03eb51f Author: Andrey Andreev <narf@devilix.net> Thu, 19 Jan 2017 13:29:05 +0200 Committer: Nikita Popov <nikita.ppv@gmail.com> Sun, 22 Jan 2017 10:37:10 +0100 Parents: d6ef39e04aa724e13fa8b6bc3de7cf2e7e7bc2bc Branches: master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=423c192791de8f71b8f19057b64441adb03eb51f Log: Use hash_ops->is_crypto in hash_init() Changed paths: M ext/hash/hash.c M ext/hash/tests/bug52240.phpt A ext/hash/tests/hash_init_error.phpt Diff: diff --git a/ext/hash/hash.c b/ext/hash/hash.c index 8040732..5224148 100644 --- a/ext/hash/hash.c +++ b/ext/hash/hash.c @@ -350,6 +350,11 @@ PHP_FUNCTION(hash_init) RETURN_FALSE; } + if (options & PHP_HASH_HMAC && !ops->is_crypto) { + php_error_docref(NULL, E_WARNING, "HMAC requested with a non-cryptographic hashing algorithm: %s", algo); + RETURN_FALSE; + } + if (options & PHP_HASH_HMAC && key_len <= 0) { /* Note: a zero length key is no key at all */ diff --git a/ext/hash/tests/bug52240.phpt b/ext/hash/tests/bug52240.phpt index 1f8472c..6e0c8f6 100644 --- a/ext/hash/tests/bug52240.phpt +++ b/ext/hash/tests/bug52240.phpt @@ -5,7 +5,7 @@ Bug #52240 (hash_copy() does not copy the HMAC key, causes wrong results and PHP --FILE-- <?php -$h = hash_init('crc32b', HASH_HMAC, '123456' ); +$h = hash_init('md5', HASH_HMAC, '123456'); $h2 = hash_copy($h); var_dump(hash_final($h)); $h3 = hash_copy($h2); @@ -14,6 +14,6 @@ var_dump(hash_final($h3)); ?> --EXPECT-- -string(8) "278af264" -string(8) "278af264" -string(8) "278af264" +string(32) "cab1380ea86d8acc9aa62390a58406aa" +string(32) "cab1380ea86d8acc9aa62390a58406aa" +string(32) "cab1380ea86d8acc9aa62390a58406aa" diff --git a/ext/hash/tests/hash_init_error.phpt b/ext/hash/tests/hash_init_error.phpt new file mode 100644 index 0000000..95c67da --- /dev/null +++ b/ext/hash/tests/hash_init_error.phpt @@ -0,0 +1,44 @@ +--TEST-- +hash_init() function - errors test +--SKIPIF-- +<?php +if (!extension_loaded('hash')) die('skip hash extension not available'); +?> +--FILE-- +<?php +echo "*** Testing hash_init(): error conditions ***\n"; + +echo "-- Testing hash_init() function with no parameters --\n"; +var_dump(hash_init()); + +echo "-- Testing hash_init() function with unknown algorithms --\n"; +var_dump(hash_init('dummy')); + +echo "-- Testing hash_init() function with HASH_HMAC and non-cryptographic algorithms --\n"; +var_dump(hash_init('crc32', HASH_HMAC)); + +echo "-- Testing hash_init() function with HASH_HMAC and no key --\n"; +var_dump(hash_init('md5', HASH_HMAC)); +var_dump(hash_init('md5', HASH_HMAC, null)); +?> +--EXPECTF-- +*** Testing hash_init(): error conditions *** +-- Testing hash_init() function with no parameters -- + +Warning: hash_init() expects at least 1 parameter, 0 given in %s on line %d +NULL +-- Testing hash_init() function with unknown algorithms -- + +Warning: hash_init(): Unknown hashing algorithm: dummy in %s on line %d +bool(false) +-- Testing hash_init() function with HASH_HMAC and non-cryptographic algorithms -- + +Warning: hash_init(): HMAC requested with a non-cryptographic hashing algorithm: crc32 in %s on line %d +bool(false) +-- Testing hash_init() function with HASH_HMAC and no key -- + +Warning: hash_init(): HMAC requested without a key %s on line %d +bool(false) + +Warning: hash_init(): HMAC requested without a key %s on line %d +bool(false)

« previous php.cvs (#96836) next »