[prev in list] [next in list] [prev in thread] [next in thread] 

List:       php-cvs
Subject:    [PHP-CVS] cvs: php-src /ext/mcrypt mcrypt.c  /ext/mcrypt/tests blowfish.phpt bug37595.phpt
From:       "Derick Rethans" <derick () php ! net>
Date:       2006-05-31 20:13:14
Message-ID: cvsderick1149106394 () cvsserver
[Download RAW message or body]

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 <derick@derickrethans.nl>                    |
    +----------------------------------------------------------------------+
  */
-/* $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

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic