From: Derick Rethans Date: Wed, 31 May 2006 20:13:14 +0000 (+0000) Subject: - MF52: There was nothing wrong here, bug report #37595 is bogus. X-Git-Tag: BEFORE_NEW_OUTPUT_API~15 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=48d0606f8d43b2d32dda168190a83f575e4ee27d;p=php - MF52: There was nothing wrong here, bug report #37595 is bogus. - MF52: Added a new test case to demonstrate a longer plain text. --- diff --git a/ext/mcrypt/mcrypt.c b/ext/mcrypt/mcrypt.c index a76ae2ee58..da4ce8ef79 100644 --- a/ext/mcrypt/mcrypt.c +++ b/ext/mcrypt/mcrypt.c @@ -492,11 +492,15 @@ PHP_FUNCTION(mcrypt_generic) 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 @@ PHP_FUNCTION(mdecrypt_generic) 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 */ diff --git a/ext/mcrypt/tests/blowfish.phpt b/ext/mcrypt/tests/blowfish.phpt index dc51da65b3..ce258d3e13 100644 --- a/ext/mcrypt/tests/blowfish.phpt +++ b/ext/mcrypt/tests/blowfish.phpt @@ -36,7 +36,19 @@ foreach($vectors as $data) { ($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 @@ E0FEE0FEF1FEF1FE 0123456789ABCDEF c39e072d9fac631d c39e072d9fac631d OK FFFFFFFFFFFFFFFF 0000000000000000 f21e9a77b71c49bc f21e9a77b71c49bc OK 0123456789ABCDEF 0000000000000000 245946885754369a 245946885754369a OK FEDCBA9876543210 FFFFFFFFFFFFFFFF 6b5c5a9c5d9e0a5a 6b5c5a9c5d9e0a5a OK + +6b77b4d63006dee605b156e27403979358deb9e7154616d959f1652bd5ff92cc diff --git a/ext/mcrypt/tests/bug37595.phpt b/ext/mcrypt/tests/bug37595.phpt index a74b8cfaa8..3499612bf4 100644 Binary files a/ext/mcrypt/tests/bug37595.phpt and b/ext/mcrypt/tests/bug37595.phpt differ