Allow empty arguments in some CCM functions' parameter validation
diff --git a/library/ccm.c b/library/ccm.c
index ad0d71b..97eed7b 100644
--- a/library/ccm.c
+++ b/library/ccm.c
@@ -323,9 +323,9 @@
{
CCM_VALIDATE_RET( ctx != NULL );
CCM_VALIDATE_RET( iv != NULL );
- CCM_VALIDATE_RET( add != NULL );
- CCM_VALIDATE_RET( input != NULL );
- CCM_VALIDATE_RET( output != NULL );
+ CCM_VALIDATE_RET( add_len == 0 || add != NULL );
+ CCM_VALIDATE_RET( length == 0 || input != NULL );
+ CCM_VALIDATE_RET( length == 0 || output != NULL );
CCM_VALIDATE_RET( tag != NULL );
return( ccm_auth_crypt( ctx, CCM_ENCRYPT, length, iv, iv_len,
add, add_len, input, output, tag, tag_len ) );
@@ -339,9 +339,9 @@
{
CCM_VALIDATE_RET( ctx != NULL );
CCM_VALIDATE_RET( iv != NULL );
- CCM_VALIDATE_RET( add != NULL );
- CCM_VALIDATE_RET( input != NULL );
- CCM_VALIDATE_RET( output != NULL );
+ CCM_VALIDATE_RET( add_len == 0 || add != NULL );
+ CCM_VALIDATE_RET( length == 0 || input != NULL );
+ CCM_VALIDATE_RET( length == 0 || output != NULL );
CCM_VALIDATE_RET( tag != NULL );
if( tag_len == 0 )
return( MBEDTLS_ERR_CCM_BAD_INPUT );
@@ -366,9 +366,9 @@
CCM_VALIDATE_RET( ctx != NULL );
CCM_VALIDATE_RET( iv != NULL );
- CCM_VALIDATE_RET( add != NULL );
- CCM_VALIDATE_RET( input != NULL );
- CCM_VALIDATE_RET( output != NULL );
+ CCM_VALIDATE_RET( add_len == 0 || add != NULL );
+ CCM_VALIDATE_RET( length == 0 || input != NULL );
+ CCM_VALIDATE_RET( length == 0 || output != NULL );
CCM_VALIDATE_RET( tag != NULL );
if( ( ret = ccm_auth_crypt( ctx, CCM_DECRYPT, length,