mirror of
https://github.com/php/php-src.git
synced 2024-09-26 20:37:29 +00:00
- Fixed bug #46010 (warnings incorrectly generated for iv in ecb mode)
This commit is contained in:
parent
c868694dee
commit
028d0cd2dd
@ -1276,7 +1276,7 @@ int php_mcrypt_func(php_mcrypt_op op, char *cipher, char *mode, char *key_str, i
|
||||
{
|
||||
MCRYPT td;
|
||||
char *cipher_dir_string, *module_dir_string, *key_copy, *iv_copy;
|
||||
int i, status = SUCCESS, count, *key_sizes, key_size, iv_size, block_size, iv_req;
|
||||
int i, status = SUCCESS, count, *key_sizes, key_size, iv_size, block_size;
|
||||
|
||||
MCRYPT_GET_INI
|
||||
|
||||
@ -1314,20 +1314,20 @@ int php_mcrypt_func(php_mcrypt_op op, char *cipher, char *mode, char *key_str, i
|
||||
mcrypt_free(key_sizes);
|
||||
|
||||
iv_size = mcrypt_enc_get_iv_size(td);
|
||||
iv_req = mcrypt_enc_mode_has_iv(td);
|
||||
if (iv_len) {
|
||||
if (iv_len == iv_size) {
|
||||
iv_copy = estrndup(iv_str, iv_len);
|
||||
/* IV is required */
|
||||
if (mcrypt_enc_mode_has_iv(td) == 1) {
|
||||
if (iv_len) {
|
||||
if (iv_len == iv_size) {
|
||||
iv_copy = estrndup(iv_str, iv_len);
|
||||
} else {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, MCRYPT_IV_WRONG_SIZE);
|
||||
iv_copy = ecalloc(1, iv_size);
|
||||
memcpy(iv_copy, iv_str, MIN(iv_len, iv_size));
|
||||
}
|
||||
} else {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, MCRYPT_IV_WRONG_SIZE);
|
||||
iv_copy = ecalloc(1, iv_size);
|
||||
memcpy(iv_copy, iv_str, MIN(iv_len, iv_size));
|
||||
}
|
||||
} else {
|
||||
if (iv_req) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Attempt to use an empty IV, which is NOT recommended");
|
||||
iv_copy = ecalloc(1, iv_size);
|
||||
}
|
||||
iv_copy = ecalloc(1, iv_size);
|
||||
}
|
||||
|
||||
if (mcrypt_enc_is_block_mode(td) == 1) {
|
||||
|
14
ext/mcrypt/tests/bug46010.phpt
Normal file
14
ext/mcrypt/tests/bug46010.phpt
Normal file
@ -0,0 +1,14 @@
|
||||
--TEST---
|
||||
Bug #46010 (warnings incorrectly generated for iv in ecb mode)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
var_dump(bin2hex(mcrypt_encrypt(MCRYPT_TRIPLEDES, "key", "data", MCRYPT_MODE_ECB)));
|
||||
var_dump(bin2hex(mcrypt_encrypt(MCRYPT_TRIPLEDES, "key", "data", MCRYPT_MODE_ECB, "a")));
|
||||
var_dump(bin2hex(mcrypt_encrypt(MCRYPT_TRIPLEDES, "key", "data", MCRYPT_MODE_ECB, "12345678")));
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
string(16) "372eeb4a524b8d31"
|
||||
string(16) "372eeb4a524b8d31"
|
||||
string(16) "372eeb4a524b8d31"
|
Loading…
Reference in New Issue
Block a user