Ensure MD self_test ret codes are not hidden
Also fix a potential memory leak and an incorrect goto statement in
sha1.c self_test
diff --git a/library/sha1.c b/library/sha1.c
index fdd0878..64b70f0 100644
--- a/library/sha1.c
+++ b/library/sha1.c
@@ -439,7 +439,7 @@
if( verbose != 0 )
mbedtls_printf( " SHA-1 test #%d: ", i + 1 );
- if( mbedtls_sha1_starts_ext( &ctx ) != 0 )
+ if( ( ret = mbedtls_sha1_starts_ext( &ctx ) ) != 0 )
goto fail;
if( i == 2 )
@@ -448,21 +448,27 @@
for( j = 0; j < 1000; j++ )
{
- if( mbedtls_sha1_update_ext( &ctx, buf, buflen ) != 0 )
+ ret = mbedtls_sha1_update_ext( &ctx, buf, buflen );
+ if( ret != 0 )
goto fail;
}
}
else
{
- if( mbedtls_sha1_update_ext( &ctx, sha1_test_buf[i],
- sha1_test_buflen[i] ) != 0 )
+ ret = mbedtls_sha1_update_ext( &ctx, sha1_test_buf[i],
+ sha1_test_buflen[i] );
+ if( ret != 0 )
goto fail;
}
- mbedtls_sha1_finish_ext( &ctx, sha1sum );
+ if( ( ret = mbedtls_sha1_finish_ext( &ctx, sha1sum ) ) != 0 )
+ goto fail;
if( memcmp( sha1sum, sha1_test_sum[i], 20 ) != 0 )
- goto exit;
+ {
+ ret = 1;
+ goto fail;
+ }
if( verbose != 0 )
mbedtls_printf( "passed\n" );
@@ -477,8 +483,6 @@
if( verbose != 0 )
mbedtls_printf( "failed\n" );
- ret = 1;
-
exit:
mbedtls_sha1_free( &ctx );