summaryrefslogtreecommitdiff
path: root/ext/mcrypt/mcrypt.c
diff options
context:
space:
mode:
authorDerick Rethans <derick@php.net>2006-05-31 20:09:07 +0000
committerDerick Rethans <derick@php.net>2006-05-31 20:09:07 +0000
commitc116ecf2079d4ca1acdc2824308420d4112514c6 (patch)
tree3bb5e16b006111c4c9ee3f1e09cd6b356a16dd02 /ext/mcrypt/mcrypt.c
parentc188ec09eb5aee729dd129b01808bdcae0d708f6 (diff)
downloadphp-git-c116ecf2079d4ca1acdc2824308420d4112514c6.tar.gz
- There was nothing wrong here, bug report #37595 is bogus.
- Added a new test case to demonstrate a longer plain text.
Diffstat (limited to 'ext/mcrypt/mcrypt.c')
-rw-r--r--ext/mcrypt/mcrypt.c10
1 files changed, 9 insertions, 1 deletions
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 */