Adapt programs / test suites
diff --git a/programs/random/gen_random_havege.c b/programs/random/gen_random_havege.c
index fd39411..e9152fa 100644
--- a/programs/random/gen_random_havege.c
+++ b/programs/random/gen_random_havege.c
@@ -48,7 +48,7 @@
 {
     FILE *f;
     time_t t;
-    int i, k;
+    int i, k, ret = 0;
     havege_state hs;
     unsigned char buf[1024];
 
@@ -73,8 +73,9 @@
         if( havege_random( &hs, buf, sizeof( buf ) ) != 0 )
         {
             printf( "Failed to get random from source.\n" );
-            fclose( f );
-            return( 1 );
+
+            ret = 1;
+            goto exit;
         }
 
         fwrite( buf, sizeof( buf ), 1, f );
@@ -89,7 +90,9 @@
 
     printf(" \n ");
 
+exit:
+    havege_free( &hs );
     fclose( f );
-    return( 0 );
+    return( ret );
 }
 #endif /* POLARSSL_HAVEGE_C */