Skip to content

Commit

Permalink
Warnings become errors hash_hmac hash_hmac_file
Browse files Browse the repository at this point in the history
  • Loading branch information
marandall authored and krakjoe committed Aug 29, 2019
1 parent 62751b0 commit 2158785
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 25 deletions.
12 changes: 6 additions & 6 deletions ext/hash/hash.c
Expand Up @@ -252,18 +252,18 @@ static void php_hash_do_hash_hmac(INTERNAL_FUNCTION_PARAMETERS, int isfilename,

ops = php_hash_fetch_ops(algo, algo_len);
if (!ops) {
php_error_docref(NULL, E_WARNING, "Unknown hashing algorithm: %s", algo);
RETURN_FALSE;
zend_throw_error(NULL, "Unknown hashing algorithm: %s", algo);
return;
}
else if (!ops->is_crypto) {
php_error_docref(NULL, E_WARNING, "Non-cryptographic hashing algorithm: %s", algo);
RETURN_FALSE;
zend_throw_error(NULL, "Non-cryptographic hashing algorithm: %s", algo);
return;
}

if (isfilename) {
if (CHECK_NULL_PATH(data, data_len)) {
php_error_docref(NULL, E_WARNING, "Invalid path");
RETURN_FALSE;
zend_throw_error(NULL, "Invalid path");
return;
}
stream = php_stream_open_wrapper_ex(data, "rb", REPORT_ERRORS, NULL, FG(default_context));
if (!stream) {
Expand Down
24 changes: 15 additions & 9 deletions ext/hash/tests/hash_hmac_error.phpt
Expand Up @@ -13,23 +13,29 @@ $data = "This is a sample string used to test the hash_hmac function with variou
$key = 'secret';

echo "\n-- Testing hash_hmac() function with invalid hash algorithm --\n";
var_dump(hash_hmac('foo', $data, $key));
try {
var_dump(hash_hmac('foo', $data, $key));
}
catch (\Error $e) {
echo $e->getMessage() . "\n";
}

echo "\n-- Testing hash_hmac() function with non-cryptographic hash algorithm --\n";
var_dump(hash_hmac('crc32', $data, $key));
try {
var_dump(hash_hmac('crc32', $data, $key));
}
catch (\Error $e) {
echo $e->getMessage() . "\n";
}

?>
===Done===
--EXPECTF--
--EXPECT--
*** Testing hash_hmac() : error conditions ***

-- Testing hash_hmac() function with invalid hash algorithm --

Warning: hash_hmac(): Unknown hashing algorithm: foo in %s on line %d
bool(false)
Unknown hashing algorithm: foo

-- Testing hash_hmac() function with non-cryptographic hash algorithm --

Warning: hash_hmac(): Non-cryptographic hashing algorithm: crc32 in %s on line %d
bool(false)
Non-cryptographic hashing algorithm: crc32
===Done===
32 changes: 22 additions & 10 deletions ext/hash/tests/hash_hmac_file_error.phpt
Expand Up @@ -15,28 +15,40 @@ $file = __DIR__ . "hash_file.txt";
$key = 'secret';

echo "\n-- Testing hash_hmac_file() function with invalid hash algorithm --\n";
hash_hmac_file('foo', $file, $key, TRUE);
try {
var_dump(hash_hmac_file('foo', $file, $key, TRUE));
}
catch (\Error $e) {
echo $e->getMessage() . "\n";
}

echo "\n-- Testing hash_hmac_file() function with non-cryptographic hash algorithm --\n";
hash_hmac_file('crc32', $file, $key, TRUE);
try {
var_dump(hash_hmac_file('crc32', $file, $key, TRUE));
}
catch (\Error $e) {
echo $e->getMessage() . "\n";
}

echo "\n-- Testing hash_hmac_file() function with bad path --\n";
hash_hmac_file('md5', $file.chr(0).$file, $key, TRUE);
try {
var_dump(hash_hmac_file('md5', $file.chr(0).$file, $key, TRUE));
}
catch (\Error $e) {
echo $e->getMessage() . "\n";
}

?>
===Done===
--EXPECTF--
--EXPECT--
*** Testing hash() : error conditions ***

-- Testing hash_hmac_file() function with invalid hash algorithm --

Warning: hash_hmac_file(): Unknown hashing algorithm: foo in %s on line %d
Unknown hashing algorithm: foo

-- Testing hash_hmac_file() function with non-cryptographic hash algorithm --

Warning: hash_hmac_file(): Non-cryptographic hashing algorithm: crc32 in %s on line %d
Non-cryptographic hashing algorithm: crc32

-- Testing hash_hmac_file() function with bad path --

Warning: hash_hmac_file(): Invalid path in %s on line %d
Invalid path
===Done===

0 comments on commit 2158785

Please sign in to comment.