Added return value checking for correctness in programs
diff --git a/programs/aes/crypt_and_hash.c b/programs/aes/crypt_and_hash.c
index 333f10e..859dc33 100644
--- a/programs/aes/crypt_and_hash.c
+++ b/programs/aes/crypt_and_hash.c
@@ -164,7 +164,11 @@
fprintf( stderr, "Cipher '%s' not found\n", argv[4] );
goto exit;
}
- cipher_init_ctx( &cipher_ctx, cipher_info);
+ if( ( ret = cipher_init_ctx( &cipher_ctx, cipher_info) ) != 0 )
+ {
+ fprintf( stderr, "cipher_init_ctx failed\n" );
+ goto exit;
+ }
md_info = md_info_from_string( argv[5] );
if( md_info == NULL )
@@ -326,11 +330,16 @@
if( fread( buffer, 1, ilen, fin ) != ilen )
{
- fprintf( stderr, "fread(%ld bytes) failed\n", (long) n );
+ fprintf( stderr, "fread(%ld bytes) failed\n", (long) ilen );
goto exit;
}
- cipher_update( &cipher_ctx, buffer, ilen, output, &olen );
+ if( cipher_update( &cipher_ctx, buffer, ilen, output, &olen ) != 0 )
+ {
+ fprintf( stderr, "cipher_update() returned error\n");
+ goto exit;
+ }
+
md_hmac_update( &md_ctx, output, olen );
if( fwrite( output, 1, olen, fout ) != olen )
@@ -424,10 +433,24 @@
memset( key, 0, sizeof( key ) );
- cipher_setkey( &cipher_ctx, digest, cipher_info->key_length,
- POLARSSL_DECRYPT );
- cipher_set_iv( &cipher_ctx, IV, 16 );
- cipher_reset( &cipher_ctx );
+ if( cipher_setkey( &cipher_ctx, digest, cipher_info->key_length,
+ POLARSSL_DECRYPT ) != 0 )
+ {
+ fprintf( stderr, "cipher_setkey() returned error\n" );
+ goto exit;
+ }
+
+ if( cipher_set_iv( &cipher_ctx, IV, 16 ) != 0 )
+ {
+ fprintf( stderr, "cipher_set_iv() returned error\n" );
+ goto exit;
+ }
+
+ if( cipher_reset( &cipher_ctx ) != 0 )
+ {
+ fprintf( stderr, "cipher_reset() returned error\n" );
+ goto exit;
+ }
md_hmac_starts( &md_ctx, digest, 32 );
@@ -445,8 +468,13 @@
}
md_hmac_update( &md_ctx, buffer, cipher_get_block_size( &cipher_ctx ) );
- cipher_update( &cipher_ctx, buffer, cipher_get_block_size( &cipher_ctx ),
- output, &olen );
+ if( cipher_update( &cipher_ctx, buffer,
+ cipher_get_block_size( &cipher_ctx ),
+ output, &olen ) != 0 )
+ {
+ fprintf( stderr, "cipher_update() returned error\n" );
+ goto exit;
+ }
if( fwrite( output, 1, olen, fout ) != olen )
{