summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-libs/polarssl/files/polarssl-1.3.8-ssl_pthread_server.patch')
-rw-r--r--net-libs/polarssl/files/polarssl-1.3.8-ssl_pthread_server.patch40
1 files changed, 40 insertions, 0 deletions
diff --git a/net-libs/polarssl/files/polarssl-1.3.8-ssl_pthread_server.patch b/net-libs/polarssl/files/polarssl-1.3.8-ssl_pthread_server.patch
new file mode 100644
index 000000000000..0c6ca92773e0
--- /dev/null
+++ b/net-libs/polarssl/files/polarssl-1.3.8-ssl_pthread_server.patch
@@ -0,0 +1,40 @@
+diff --git a/programs/ssl/ssl_pthread_server.c b/programs/ssl/ssl_pthread_server.c
+index cc6ad89..019e4e8 100644
+--- a/programs/ssl/ssl_pthread_server.c
++++ b/programs/ssl/ssl_pthread_server.c
+@@ -129,6 +129,10 @@ static void *handle_ssl_connection( void *data )
+ ssl_context ssl;
+ ctr_drbg_context ctr_drbg;
+
++ /* Make sure memory references are valid */
++ memset( &ssl, 0, sizeof( ssl_context ) );
++ memset( &ctr_drbg, 0, sizeof( ctr_drbg_context ) );
++
+ snprintf( pers, sizeof(pers), "SSL Pthread Thread %d", thread_id );
+ printf( " [ #%d ] Client FD %d\n", thread_id, client_fd );
+ printf( " [ #%d ] Seeding the random number generator...\n", thread_id );
+@@ -176,7 +180,7 @@ static void *handle_ssl_connection( void *data )
+ if( ( ret = ssl_set_own_cert( &ssl, thread_info->server_cert, thread_info->server_key ) ) != 0 )
+ {
+ printf( " failed\n ! ssl_set_own_cert returned %d\n\n", ret );
+- goto exit;
++ goto thread_exit;
+ }
+
+ printf( " [ #%d ] ok\n", thread_id );
+@@ -308,6 +312,7 @@ thread_exit:
+ #endif
+
+ net_close( client_fd );
++ ctr_drbg_free( &ctr_drbg );
+ ssl_free( &ssl );
+
+ thread_info->thread_complete = 1;
+@@ -492,7 +497,6 @@ exit:
+ #if defined(POLARSSL_SSL_CACHE_C)
+ ssl_cache_free( &cache );
+ #endif
+- ctr_drbg_free( &ctr_drbg );
+ entropy_free( &entropy );
+
+ polarssl_mutex_free( &debug_mutex );