derick          Sat Dec  1 17:19:46 2007 UTC

  Added files:                 
    /php-src/ext/mcrypt/tests   bug43143.phpt 

  Modified files:              
    /php-src/ext/mcrypt mcrypt.c 
  Log:
  - Fixed bug #43143 (Warning about empty IV with MCRYPT_MODE_ECB).
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/mcrypt/mcrypt.c?r1=1.107&r2=1.108&diff_format=u
Index: php-src/ext/mcrypt/mcrypt.c
diff -u php-src/ext/mcrypt/mcrypt.c:1.107 php-src/ext/mcrypt/mcrypt.c:1.108
--- php-src/ext/mcrypt/mcrypt.c:1.107   Thu Sep 27 18:28:40 2007
+++ php-src/ext/mcrypt/mcrypt.c Sat Dec  1 17:19:45 2007
@@ -16,7 +16,7 @@
    |          Derick Rethans <[EMAIL PROTECTED]>                    |
    +----------------------------------------------------------------------+
  */
-/* $Id: mcrypt.c,v 1.107 2007/09/27 18:28:40 dmitry Exp $ */
+/* $Id: mcrypt.c,v 1.108 2007/12/01 17:19:45 derick Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -1030,7 +1030,7 @@
 {
        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;
+       int i, status = SUCCESS, count, *key_sizes, key_size, iv_size, 
block_size, iv_req;
        
        MCRYPT_GET_INI
        
@@ -1068,6 +1068,7 @@
        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);
@@ -1077,7 +1078,9 @@
                        memcpy(iv_copy, iv_str, MIN(iv_len, iv_size));
                }
        } else {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Attempt to use an 
empty IV, which is NOT recommended");
+               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);
        }
        

http://cvs.php.net/viewvc.cgi/php-src/ext/mcrypt/tests/bug43143.phpt?view=markup&rev=1.1
Index: php-src/ext/mcrypt/tests/bug43143.phpt
+++ php-src/ext/mcrypt/tests/bug43143.phpt
--TEST--
Bug #43143 (Warning about empty IV with MCRYPT_MODE_ECB)
--SKIPIF--
<?php if (!extension_loaded("mcrypt")) print "skip"; ?>
--FILE--
<?php
echo "ECB\n";
$input = 'to be encrypted';
$mkey = hash('sha256', 'secret key', TRUE);
$data = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $mkey, $input, MCRYPT_MODE_ECB);
echo "CFB\n";
$input = 'to be encrypted';
$mkey = hash('sha256', 'secret key', TRUE);
$data = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $mkey, $input, MCRYPT_MODE_CFB);
echo "END\n";
?>
--EXPECTF--
ECB
CFB

Warning: mcrypt_encrypt(): Attempt to use an empty IV, which is NOT recommended 
in %sbug43143.php on line 9
END

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to