WRONG_PARAM_COUNT; \
}
+#define MCRYPT_CHECK_PARAM_COUNT_EX(a,b) \
+ if (argc < (a) || argc > (b)) { \
+ zend_get_parameters_ex(1, &mcryptind); \
+ zend_list_delete (Z_LVAL_PP(mcryptind)); \
+ WRONG_PARAM_COUNT; \
+ }
+
#define MCRYPT_GET_CRYPT_ARGS \
switch (argc) { \
case 5: \
int result = 0;
argc = ZEND_NUM_ARGS();
- MCRYPT_CHECK_PARAM_COUNT (3,3)
+ MCRYPT_CHECK_PARAM_COUNT_EX (3,3)
zend_get_parameters_ex(3, &mcryptind, &key, &iv);
ZEND_FETCH_RESOURCE (td, MCRYPT, mcryptind, -1, "MCrypt", le_mcrypt);
int block_size, data_size;
argc = ZEND_NUM_ARGS();
- MCRYPT_CHECK_PARAM_COUNT (2,2)
+ MCRYPT_CHECK_PARAM_COUNT_EX (2,2)
zend_get_parameters_ex(2, &mcryptind, &data);
ZEND_FETCH_RESOURCE (td, MCRYPT, mcryptind, -1, "MCrypt", le_mcrypt);
int block_size, data_size;
argc = ZEND_NUM_ARGS();
- MCRYPT_CHECK_PARAM_COUNT (2,2)
+ MCRYPT_CHECK_PARAM_COUNT_EX (2,2)
zend_get_parameters_ex(2, &mcryptind, &data);
ZEND_FETCH_RESOURCE (td, MCRYPT, mcryptind, -1, "MCrypt", le_mcrypt);
--- /dev/null
+--TEST--
+Bug #21039
+--SKIPIF--
+<?php if (!extension_loaded("mcrypt")) print "skip"; ?>
+--POST--
+--GET--
+--FILE--
+<?php
+ error_reporting(E_ALL);
+ $nthash = "00000000000000000";
+ $challenge = "foo";
+ $td = mcrypt_module_open ('des', '', 'cbc', '');
+ $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);
+ $var = @mcrypt_generic_init ($td, substr($nthash, 0, 8));
+ $res = @mcrypt_generic ($td, $challenge);
+ print "I'm alive!\n";
+?>
+--EXPECT--
+I'm alive!