Proper initialization and checks for rare cases
diff --git a/programs/aes/crypt_and_hash.c b/programs/aes/crypt_and_hash.c
index fc86337..95a3160 100644
--- a/programs/aes/crypt_and_hash.c
+++ b/programs/aes/crypt_and_hash.c
@@ -502,7 +502,11 @@
         /*
          * Write the final block of data
          */
-        cipher_finish( &cipher_ctx, output, &olen );
+        if( cipher_finish( &cipher_ctx, output, &olen ) != 0 )
+        {
+            fprintf( stderr, "cipher_finish() returned error\n" );
+            goto exit;
+        }
 
         if( fwrite( output, 1, olen, fout ) != olen )
         {
diff --git a/programs/pkey/key_app_writer.c b/programs/pkey/key_app_writer.c
index d8465ca..0055319 100644
--- a/programs/pkey/key_app_writer.c
+++ b/programs/pkey/key_app_writer.c
@@ -97,6 +97,9 @@
     c = base_buf;
 
     f = fopen( output_file, "w" );
+    if( f == NULL )
+        return;
+
     fprintf(f, "-----BEGIN PUBLIC KEY-----\n");
     while (olen)
     {
diff --git a/programs/ssl/ssl_client1.c b/programs/ssl/ssl_client1.c
index d629bd8..0405326 100644
--- a/programs/ssl/ssl_client1.c
+++ b/programs/ssl/ssl_client1.c
@@ -72,7 +72,7 @@
 #else
 int main( int argc, char *argv[] )
 {
-    int ret, len, server_fd;
+    int ret, len, server_fd = -1;
     unsigned char buf[1024];
     const char *pers = "ssl_client1";
 
diff --git a/programs/ssl/ssl_fork_server.c b/programs/ssl/ssl_fork_server.c
index 5ea79b3..47dedb4 100644
--- a/programs/ssl/ssl_fork_server.c
+++ b/programs/ssl/ssl_fork_server.c
@@ -97,7 +97,7 @@
 {
     int ret, len, cnt = 0, pid;
     int listen_fd;
-    int client_fd;
+    int client_fd = -1;
     unsigned char buf[1024];
     const char *pers = "ssl_fork_server";
 
diff --git a/programs/ssl/ssl_mail_client.c b/programs/ssl/ssl_mail_client.c
index 20ded2a..31e22fc 100644
--- a/programs/ssl/ssl_mail_client.c
+++ b/programs/ssl/ssl_mail_client.c
@@ -373,6 +373,7 @@
     memset( &cacert, 0, sizeof( x509_cert ) );
     memset( &clicert, 0, sizeof( x509_cert ) );
     memset( &rsa, 0, sizeof( rsa_context ) );
+    memset( &ssl, 0, sizeof( ssl_context ) );
 
     if( argc == 0 )
     {
diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c
index 5be6d6c..3cc3f8a 100644
--- a/programs/ssl/ssl_server2.c
+++ b/programs/ssl/ssl_server2.c
@@ -259,6 +259,7 @@
     memset( &cacert, 0, sizeof( x509_cert ) );
     memset( &srvcert, 0, sizeof( x509_cert ) );
     memset( &rsa, 0, sizeof( rsa_context ) );
+    memset( &ssl, 0, sizeof( ssl_context ) );
 #if defined(POLARSSL_SSL_CACHE_C)
     ssl_cache_init( &cache );
 #endif