Browse Source

- Fixed bug #46010 (warnings incorrectly generated for iv in ecb mode)

experimental/first_unicode_implementation
Felipe Pena 18 years ago
parent
commit
028d0cd2dd
  1. 24
      ext/mcrypt/mcrypt.c
  2. 14
      ext/mcrypt/tests/bug46010.phpt

24
ext/mcrypt/mcrypt.c

@ -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

@ -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…
Cancel
Save