Browse Source

Fix #64745 hash_pbkdf2 truncation issue

When using hash_pbkdf2 with hex output and 0 length (auto), it incorrectly
truncates the result to 1/2 the expected result.
pull/319/merge
Anthony Ferrara 13 years ago
parent
commit
540a5a52e8
  1. 4
      NEWS
  2. 3
      ext/hash/hash.c
  3. 17
      ext/hash/tests/bug64745.phpt

4
NEWS

@ -5,6 +5,10 @@ PHP NEWS
-FPM:
. Fixed Bug #64915 (error_log ignored when daemonize=0). (Remi)
- Hash:
. Fixed Bug #64745 (hash_pbkdf2() truncates data when using default length
and hex output). (Anthony Ferrara)
23 May 2013, PHP 5.5.0 Release Candidate 2
- Core:

3
ext/hash/hash.c

@ -659,6 +659,9 @@ PHP_FUNCTION(hash_pbkdf2)
/* Setup Main Loop to build a long enough result */
if (length == 0) {
length = ops->digest_size;
if (!raw_output) {
length = length * 2;
}
}
digest_length = length;
if (!raw_output) {

17
ext/hash/tests/bug64745.phpt

@ -0,0 +1,17 @@
--TEST--
Bug #64745 hash_pbkdf2() truncates data when using default length and hex output
--SKIPIF--
<?php extension_loaded('hash') or die('skip'); ?>
--FILE--
<?php
$hash = hash_pbkdf2('sha1', 'password', 'salt', 1, 0);
$rawHash = hash_pbkdf2('sha1', 'password', 'salt', 1, 0, true);
var_dump($hash);
var_dump(bin2hex($rawHash));
?>
--EXPECT--
string(40) "0c60c80f961f0e71f3a9b524af6012062fe037a6"
string(40) "0c60c80f961f0e71f3a9b524af6012062fe037a6"
Loading…
Cancel
Save