Proper initialization and checks for rare cases
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