Validate tag pointer in ccm function.
Signed-off-by: Mateusz Starzyk <mateusz.starzyk@mobica.com>
diff --git a/library/ccm.c b/library/ccm.c
index a14e025..af26de8 100644
--- a/library/ccm.c
+++ b/library/ccm.c
@@ -478,7 +478,8 @@
ret = mbedtls_ccm_crypt( ctx, 0, 16, ctx->y, ctx->y );
if( ret != 0 )
return ret;
- memcpy( tag, ctx->y, tag_len );
+ if( tag != NULL )
+ memcpy( tag, ctx->y, tag_len );
mbedtls_ccm_clear_state(ctx);
return( 0 );
diff --git a/tests/suites/test_suite_ccm.function b/tests/suites/test_suite_ccm.function
index 25cc49b..21f0699 100644
--- a/tests/suites/test_suite_ccm.function
+++ b/tests/suites/test_suite_ccm.function
@@ -48,10 +48,7 @@
mbedtls_free( output );
output = NULL;
- if( tag->len == 0 )
- ASSERT_ALLOC( output, 16 );
- else
- ASSERT_ALLOC( output, tag->len );
+ ASSERT_ALLOC( output, tag->len );
TEST_EQUAL( 0, mbedtls_ccm_finish( ctx, output, tag->len ) );
ASSERT_COMPARE( output, tag->len, tag->x, tag->len );
mbedtls_free( output );