felipe Sat, 03 Jul 2010 13:06:14 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=300972
Log: - Fixed bug #52240 (hash_copy() does not copy the HMAC key, causes wrong results and PHP crashes) Bug: http://bugs.php.net/52240 (Open) hash_copy() does not copy the HMAC key, causes wrong results and PHP crashes Changed paths: U php/php-src/branches/PHP_5_3/NEWS U php/php-src/branches/PHP_5_3/ext/hash/hash.c A php/php-src/branches/PHP_5_3/ext/hash/tests/bug52240.phpt U php/php-src/trunk/ext/hash/hash.c A php/php-src/trunk/ext/hash/tests/bug52240.phpt Modified: php/php-src/branches/PHP_5_3/NEWS =================================================================== --- php/php-src/branches/PHP_5_3/NEWS 2010-07-03 12:57:19 UTC (rev 300971) +++ php/php-src/branches/PHP_5_3/NEWS 2010-07-03 13:06:14 UTC (rev 300972) @@ -1,7 +1,8 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? Jul 2010, PHP 5.3.3 RC3 - +- Fixed bug #52240 (hash_copy() does not copy the HMAC key, causes wrong + results and PHP crashes). (Felipe) - Fixed bug #52238 (Crash when an Exception occured in iterator_to_array). (Johannes) Modified: php/php-src/branches/PHP_5_3/ext/hash/hash.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/hash/hash.c 2010-07-03 12:57:19 UTC (rev 300971) +++ php/php-src/branches/PHP_5_3/ext/hash/hash.c 2010-07-03 13:06:14 UTC (rev 300972) @@ -556,8 +556,10 @@ copy_hash->ops = hash->ops; copy_hash->context = context; copy_hash->options = hash->options; - copy_hash->key = hash->key; - + copy_hash->key = ecalloc(1, hash->ops->block_size); + if (hash->key) { + memcpy(copy_hash->key, hash->key, hash->ops->block_size); + } ZEND_REGISTER_RESOURCE(return_value, copy_hash, php_hash_le_hash); } /* }}} */ Added: php/php-src/branches/PHP_5_3/ext/hash/tests/bug52240.phpt =================================================================== --- php/php-src/branches/PHP_5_3/ext/hash/tests/bug52240.phpt (rev 0) +++ php/php-src/branches/PHP_5_3/ext/hash/tests/bug52240.phpt 2010-07-03 13:06:14 UTC (rev 300972) @@ -0,0 +1,19 @@ +--TEST-- +Bug #52240 (hash_copy() does not copy the HMAC key, causes wrong results and PHP crashes) +--SKIPIF-- +<?php extension_loaded('hash') or die('skip'); ?> +--FILE-- +<?php + +$h = hash_init('crc32b', HASH_HMAC, '123456' ); +$h2 = hash_copy($h); +var_dump(hash_final($h)); +$h3 = hash_copy($h2); +var_dump(hash_final($h2)); +var_dump(hash_final($h3)); + +?> +--EXPECT-- +string(8) "278af264" +string(8) "278af264" +string(8) "278af264" Property changes on: php/php-src/branches/PHP_5_3/ext/hash/tests/bug52240.phpt ___________________________________________________________________ Added: svn:keywords + Id Rev Revision Added: svn:eol-style + native Modified: php/php-src/trunk/ext/hash/hash.c =================================================================== --- php/php-src/trunk/ext/hash/hash.c 2010-07-03 12:57:19 UTC (rev 300971) +++ php/php-src/trunk/ext/hash/hash.c 2010-07-03 13:06:14 UTC (rev 300972) @@ -561,8 +561,10 @@ copy_hash->ops = hash->ops; copy_hash->context = context; copy_hash->options = hash->options; - copy_hash->key = hash->key; - + copy_hash->key = ecalloc(1, hash->ops->block_size); + if (hash->key) { + memcpy(copy_hash->key, hash->key, hash->ops->block_size); + } ZEND_REGISTER_RESOURCE(return_value, copy_hash, php_hash_le_hash); } /* }}} */ Added: php/php-src/trunk/ext/hash/tests/bug52240.phpt =================================================================== --- php/php-src/trunk/ext/hash/tests/bug52240.phpt (rev 0) +++ php/php-src/trunk/ext/hash/tests/bug52240.phpt 2010-07-03 13:06:14 UTC (rev 300972) @@ -0,0 +1,19 @@ +--TEST-- +Bug #52240 (hash_copy() does not copy the HMAC key, causes wrong results and PHP crashes) +--SKIPIF-- +<?php extension_loaded('hash') or die('skip'); ?> +--FILE-- +<?php + +$h = hash_init('crc32b', HASH_HMAC, '123456' ); +$h2 = hash_copy($h); +var_dump(hash_final($h)); +$h3 = hash_copy($h2); +var_dump(hash_final($h2)); +var_dump(hash_final($h3)); + +?> +--EXPECT-- +string(8) "278af264" +string(8) "278af264" +string(8) "278af264" Property changes on: php/php-src/trunk/ext/hash/tests/bug52240.phpt ___________________________________________________________________ Added: svn:keywords + Id Rev Revision Added: svn:eol-style + native
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php