felipe Sun Sep 7 23:00:31 2008 UTC Added files: (Branch: PHP_5_2) /php-src/ext/mcrypt/tests bug46010.phpt
Modified files: /php-src/ext/mcrypt mcrypt.c /php-src/ext/mcrypt/tests mcrypt_ecb.phpt Log: - MFH: Fixed bug #46010 (warnings incorrectly generated for iv in ecb mode) http://cvs.php.net/viewvc.cgi/php-src/ext/mcrypt/mcrypt.c?r1=1.91.2.3.2.12&r2=1.91.2.3.2.13&diff_format=u Index: php-src/ext/mcrypt/mcrypt.c diff -u php-src/ext/mcrypt/mcrypt.c:1.91.2.3.2.12 php-src/ext/mcrypt/mcrypt.c:1.91.2.3.2.13 --- php-src/ext/mcrypt/mcrypt.c:1.91.2.3.2.12 Mon Dec 31 07:20:08 2007 +++ php-src/ext/mcrypt/mcrypt.c Sun Sep 7 23:00:31 2008 @@ -16,7 +16,7 @@ | Derick Rethans <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ -/* $Id: mcrypt.c,v 1.91.2.3.2.12 2007/12/31 07:20:08 sebastian Exp $ */ +/* $Id: mcrypt.c,v 1.91.2.3.2.13 2008/09/07 23:00:31 felipe Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -1041,15 +1041,17 @@ /* Check IV */ iv_s = NULL; iv_size = mcrypt_enc_get_iv_size (td); - if (argc == 5) { - if (iv_size != Z_STRLEN_PP(iv)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, MCRYPT_IV_WRONG_SIZE); - } else { - iv_s = emalloc(iv_size + 1); - memcpy(iv_s, Z_STRVAL_PP(iv), iv_size); - } - } else if (argc == 4) { - if (iv_size != 0) { + + /* IV is required */ + if (mcrypt_enc_mode_has_iv(td) == 1) { + if (argc == 5) { + if (iv_size != Z_STRLEN_PP(iv)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, MCRYPT_IV_WRONG_SIZE); + } else { + iv_s = emalloc(iv_size + 1); + memcpy(iv_s, Z_STRVAL_PP(iv), iv_size); + } + } else if (argc == 4) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Attempt to use an empty IV, which is NOT recommend"); iv_s = emalloc(iv_size + 1); memset(iv_s, 0, iv_size + 1); http://cvs.php.net/viewvc.cgi/php-src/ext/mcrypt/tests/mcrypt_ecb.phpt?r1=1.1.4.2&r2=1.1.4.3&diff_format=u Index: php-src/ext/mcrypt/tests/mcrypt_ecb.phpt diff -u php-src/ext/mcrypt/tests/mcrypt_ecb.phpt:1.1.4.2 php-src/ext/mcrypt/tests/mcrypt_ecb.phpt:1.1.4.3 --- php-src/ext/mcrypt/tests/mcrypt_ecb.phpt:1.1.4.2 Sat May 17 23:31:31 2008 +++ php-src/ext/mcrypt/tests/mcrypt_ecb.phpt Sun Sep 7 23:00:31 2008 @@ -14,10 +14,10 @@ // we have to trim as AES rounds the blocks and decrypt doesnt detect that echo trim(mcrypt_ecb($cipher, $key, $enc_data, MCRYPT_DECRYPT, $iv)) . "\n"; -// a warning must be issued if we don't use a IV on a AES cipher, that usually requires an IV +// a warning not must be issued if we don't use a IV on a AES cipher, that not requires an IV mcrypt_ecb($cipher, $key, $enc_data, MCRYPT_DECRYPT); --EXPECTF-- PHP Testfest 2008 -Warning: mcrypt_ecb(): Attempt to use an empty IV, which is NOT recommend in %s on line %d + http://cvs.php.net/viewvc.cgi/php-src/ext/mcrypt/tests/bug46010.phpt?view=markup&rev=1.1 Index: php-src/ext/mcrypt/tests/bug46010.phpt +++ php-src/ext/mcrypt/tests/bug46010.phpt --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" -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php