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/sha256.c b/library/sha256.c
index 88435a3..16a2f0b 100644
--- a/library/sha256.c
+++ b/library/sha256.c
@@ -448,7 +448,7 @@
if( verbose != 0 )
mbedtls_printf( " SHA-%d test #%d: ", 256 - k * 32, j + 1 );
- if( mbedtls_sha256_starts_ext( &ctx, k ) != 0 )
+ if( ( ret = mbedtls_sha256_starts_ext( &ctx, k ) ) != 0 )
goto fail;
if( j == 2 )
@@ -456,23 +456,30 @@
memset( buf, 'a', buflen = 1000 );
for( j = 0; j < 1000; j++ )
- if( mbedtls_sha256_update_ext( &ctx, buf, buflen ) != 0 )
+ {
+ ret = mbedtls_sha256_update_ext( &ctx, buf, buflen );
+ if( ret != 0 )
goto fail;
+ }
}
else
{
- if( mbedtls_sha256_update_ext( &ctx, sha256_test_buf[j],
- sha256_test_buflen[j] ) != 0 )
- goto fail;
+ ret = mbedtls_sha256_update_ext( &ctx, sha256_test_buf[j],
+ sha256_test_buflen[j] );
+ if( ret != 0 )
+ goto fail;
}
- if( mbedtls_sha256_finish_ext( &ctx, sha256sum ) != 0 )
+ if( ( ret = mbedtls_sha256_finish_ext( &ctx, sha256sum ) ) != 0 )
goto fail;
if( memcmp( sha256sum, sha256_test_sum[i], 32 - k * 4 ) != 0 )
+ {
+ ret = 1;
goto fail;
+ }
if( verbose != 0 )
mbedtls_printf( "passed\n" );
@@ -487,8 +494,6 @@
if( verbose != 0 )
mbedtls_printf( "failed\n" );
- ret = 1;
-
exit:
mbedtls_sha256_free( &ctx );
mbedtls_free( buf );