@@ -993,7 +993,7 @@ static void php_mcrypt_do_crypt (char* cipher, zval **key, zval **data, char *mo
993
993
{
994
994
char * cipher_dir_string ;
995
995
char * module_dir_string ;
996
- int block_size , max_key_length , use_key_length , i , count , iv_size ;
996
+ int block_size , max_key_length , use_key_length , i , count , iv_size , req_iv ;
997
997
unsigned long int data_size ;
998
998
int * key_length_sizes ;
999
999
char * key_s = NULL , * iv_s ;
@@ -1041,6 +1041,7 @@ static void php_mcrypt_do_crypt (char* cipher, zval **key, zval **data, char *mo
1041
1041
/* Check IV */
1042
1042
iv_s = NULL ;
1043
1043
iv_size = mcrypt_enc_get_iv_size (td );
1044
+ req_iv = mcrypt_enc_mode_has_iv (td );
1044
1045
if (argc == 5 ) {
1045
1046
if (iv_size != Z_STRLEN_PP (iv )) {
1046
1047
php_error_docref (NULL TSRMLS_CC , E_WARNING , MCRYPT_IV_WRONG_SIZE );
@@ -1049,7 +1050,7 @@ static void php_mcrypt_do_crypt (char* cipher, zval **key, zval **data, char *mo
1049
1050
memcpy (iv_s , Z_STRVAL_PP (iv ), iv_size );
1050
1051
}
1051
1052
} else if (argc == 4 ) {
1052
- if (iv_size != 0 ) {
1053
+ if (req_iv == 1 ) {
1053
1054
php_error_docref (NULL TSRMLS_CC , E_WARNING , "Attempt to use an empty IV, which is NOT recommend" );
1054
1055
iv_s = emalloc (iv_size + 1 );
1055
1056
memset (iv_s , 0 , iv_size + 1 );
0 commit comments