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 )
             {
diff --git a/programs/pkey/dh_genprime.c b/programs/pkey/dh_genprime.c
index f51465a..1f9d730 100644
--- a/programs/pkey/dh_genprime.c
+++ b/programs/pkey/dh_genprime.c
@@ -65,7 +65,12 @@
     ((void) argv);
 
     mpi_init( &G ); mpi_init( &P ); mpi_init( &Q );
-    mpi_read_string( &G, 10, GENERATOR );
+
+    if( ( ret = mpi_read_string( &G, 10, GENERATOR ) ) != 0 )
+    {
+        printf( " failed\n  ! mpi_read_string returned %d\n", ret );
+        goto exit;
+    }
 
     printf( "\nWARNING: You should not generate and use your own DHM primes\n" );
     printf( "         unless you are very certain of what you are doing!\n" );
diff --git a/programs/test/benchmark.c b/programs/test/benchmark.c
index 56baa58..ddf2c78 100644
--- a/programs/test/benchmark.c
+++ b/programs/test/benchmark.c
@@ -483,11 +483,16 @@
         {
             memset( &dhm, 0, sizeof( dhm_context ) );
 
-            mpi_read_string( &dhm.P, 16, dhm_P[i] );
-            mpi_read_string( &dhm.G, 16, dhm_G[i] );
+            if( mpi_read_string( &dhm.P, 16, dhm_P[i] ) != 0 ||
+                mpi_read_string( &dhm.G, 16, dhm_G[i] ) != 0 )
+            {
+                exit( 1 );
+            }
+
             dhm.len = mpi_size( &dhm.P );
             dhm_make_public( &dhm, (int) dhm.len, buf, dhm.len, myrand, NULL );
-            mpi_copy( &dhm.GY, &dhm.GX );
+            if( mpi_copy( &dhm.GY, &dhm.GX ) != 0 )
+                exit( 1 );
 
             snprintf( title, sizeof( title ), "DHE-%d", dhm_sizes[i] );
             TIME_PUBLIC( title, "handshake",
diff --git a/programs/test/ssl_test.c b/programs/test/ssl_test.c
index 2162132..ea73d50 100644
--- a/programs/test/ssl_test.c
+++ b/programs/test/ssl_test.c
@@ -273,7 +273,13 @@
         ssl_set_ciphersuites( &ssl, opt->force_ciphersuite );
 
     if( opt->iomode == IOMODE_NONBLOCK )
-        net_set_nonblock( client_fd );
+    {
+        if( ( ret = net_set_nonblock( client_fd ) ) != 0 )
+        {
+            printf( "  ! net_set_nonblock returned %d\n\n", ret );
+            return( ret );
+        }
+    }
 
      read_buf = (unsigned char *) malloc( opt->buffer_size );
     write_buf = (unsigned char *) malloc( opt->buffer_size );