derick          Wed May 31 20:13:14 2006 UTC

  Modified files:              
    /php-src/ext/mcrypt mcrypt.c 
    /php-src/ext/mcrypt/tests   blowfish.phpt bug37595.phpt 
  Log:
  - MF52: There was nothing wrong here, bug report #37595 is bogus.
  - MF52: Added a new test case to demonstrate a longer plain text.
  
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/mcrypt/mcrypt.c?r1=1.96&r2=1.97&diff_format=u
Index: php-src/ext/mcrypt/mcrypt.c
diff -u php-src/ext/mcrypt/mcrypt.c:1.96 php-src/ext/mcrypt/mcrypt.c:1.97
--- php-src/ext/mcrypt/mcrypt.c:1.96    Wed May 31 12:04:52 2006
+++ php-src/ext/mcrypt/mcrypt.c Wed May 31 20:13:13 2006
@@ -16,7 +16,7 @@
    |          Derick Rethans <[EMAIL PROTECTED]>                    |
    +----------------------------------------------------------------------+
  */
-/* $Id: mcrypt.c,v 1.96 2006/05/31 12:04:52 tony2001 Exp $ */
+/* $Id: mcrypt.c,v 1.97 2006/05/31 20:13:13 derick Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -492,11 +492,15 @@
        ZEND_FETCH_RESOURCE(pm, php_mcrypt *, mcryptind, -1, "MCrypt", 
le_mcrypt);
        PHP_MCRYPT_INIT_CHECK
        convert_to_string_ex(data);
+       if (Z_STRLEN_PP(data) == 0) {
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "An empty string 
was passed");
+               RETURN_FALSE
+       }
 
        /* Check blocksize */
        if (mcrypt_enc_is_block_mode(pm->td) == 1) { /* It's a block algorithm 
*/
                block_size = mcrypt_enc_get_block_size(pm->td);
-               data_size = ((Z_STRLEN_PP(data) / block_size) + 1) * block_size;
+               data_size = (((Z_STRLEN_PP(data) - 1) / block_size) + 1) * 
block_size;
                data_s = emalloc(data_size + 1);
                memset(data_s, 0, data_size);
                memcpy(data_s, Z_STRVAL_PP(data), Z_STRLEN_PP(data));
@@ -533,6 +537,10 @@
        ZEND_FETCH_RESOURCE(pm, php_mcrypt * , mcryptind, -1, "MCrypt", 
le_mcrypt);
        PHP_MCRYPT_INIT_CHECK
        convert_to_string_ex(data);
+       if (Z_STRLEN_PP(data) == 0) {
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "An empty string 
was passed");
+               RETURN_FALSE
+       }
 
        /* Check blocksize */
        if (mcrypt_enc_is_block_mode(pm->td) == 1) { /* It's a block algorithm 
*/
http://cvs.php.net/viewcvs.cgi/php-src/ext/mcrypt/tests/blowfish.phpt?r1=1.3&r2=1.4&diff_format=u
Index: php-src/ext/mcrypt/tests/blowfish.phpt
diff -u php-src/ext/mcrypt/tests/blowfish.phpt:1.3 
php-src/ext/mcrypt/tests/blowfish.phpt:1.4
--- php-src/ext/mcrypt/tests/blowfish.phpt:1.3  Wed May 19 08:54:52 2004
+++ php-src/ext/mcrypt/tests/blowfish.phpt      Wed May 31 20:13:14 2006
@@ -36,7 +36,19 @@
             ($crypt==$guess ? "OK" : "BAD")
         );  
     }   
-}   
+}
+
+// Longer test case from http://www.schneier.com/code/vectors.txt
+$td = mcrypt_module_open ("blowfish", "", MCRYPT_MODE_CBC, "");
+
+$key = hex2bin( "0123456789ABCDEFF0E1D2C3B4A59687" );
+$iv = hex2bin( "FEDCBA9876543210" );
+$plain = hex2bin( "37363534333231204E6F77206973207468652074696D6520666F722000" 
);
+
+mcrypt_generic_init( $td, $key, $iv );
+$guess = bin2hex( mcrypt_generic( $td, $plain ) );
+
+echo "\n", $guess, "\n";
 ?>
 --EXPECT--
 key               plain             crypt             guess             stat
@@ -73,3 +85,5 @@
 FFFFFFFFFFFFFFFF  0000000000000000  f21e9a77b71c49bc  f21e9a77b71c49bc  OK
 0123456789ABCDEF  0000000000000000  245946885754369a  245946885754369a  OK
 FEDCBA9876543210  FFFFFFFFFFFFFFFF  6b5c5a9c5d9e0a5a  6b5c5a9c5d9e0a5a  OK
+
+6b77b4d63006dee605b156e27403979358deb9e7154616d959f1652bd5ff92cc
http://cvs.php.net/viewcvs.cgi/php-src/ext/mcrypt/tests/bug37595.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/mcrypt/tests/bug37595.phpt

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

Reply via email to