From d4734527694a0165b9b12abf5fbd4722a06b2b5c Mon Sep 17 00:00:00 2001 From: kaleb-himes Date: Tue, 1 Mar 2016 16:21:03 -0700 Subject: [PATCH 1/4] avoid dereference of null pointer if args is null --- wolfssl/test.h | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/wolfssl/test.h b/wolfssl/test.h index 851663e20..da96ae238 100644 --- a/wolfssl/test.h +++ b/wolfssl/test.h @@ -834,6 +834,7 @@ static INLINE void tcp_accept(SOCKET_T* sockfd, SOCKET_T* clientfd, { SOCKADDR_IN_T client; socklen_t client_len = sizeof(client); + tcp_ready* ready = NULL; if (udp) { udp_accept(sockfd, clientfd, useAnyAddr, port, args); @@ -846,7 +847,8 @@ static INLINE void tcp_accept(SOCKET_T* sockfd, SOCKET_T* clientfd, #if defined(_POSIX_THREADS) && defined(NO_MAIN_DRIVER) && !defined(__MINGW32__) /* signal ready to tcp_accept */ { - tcp_ready* ready = args->signal; + if (args) + ready = args->signal; if (ready) { pthread_mutex_lock(&ready->mutex); ready->ready = 1; @@ -857,15 +859,18 @@ static INLINE void tcp_accept(SOCKET_T* sockfd, SOCKET_T* clientfd, } #elif defined (WOLFSSL_TIRTOS) /* Need mutex? */ - tcp_ready* ready = args->signal; - ready->ready = 1; - ready->port = port; + if (args) + ready = args->signal; + if (ready) { + ready->ready = 1; + ready->port = port; + } #endif if (ready_file) { #ifndef NO_FILESYSTEM FILE* srf = NULL; - tcp_ready* ready = args ? args->signal : NULL; + ready = args ? args->signal : NULL; if (ready) { srf = fopen(ready->srfName, "w"); From d15dac04b849b85f4c6852643853e975c497ae70 Mon Sep 17 00:00:00 2001 From: kaleb-himes Date: Tue, 1 Mar 2016 16:33:47 -0700 Subject: [PATCH 2/4] remove unnecessary NULL assignment --- wolfssl/test.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/wolfssl/test.h b/wolfssl/test.h index da96ae238..4731132c0 100644 --- a/wolfssl/test.h +++ b/wolfssl/test.h @@ -870,7 +870,8 @@ static INLINE void tcp_accept(SOCKET_T* sockfd, SOCKET_T* clientfd, if (ready_file) { #ifndef NO_FILESYSTEM FILE* srf = NULL; - ready = args ? args->signal : NULL; + if (args) + ready = args->signal; if (ready) { srf = fopen(ready->srfName, "w"); From 85215cc1748b388eceba2b501b064ef6e3fb01c3 Mon Sep 17 00:00:00 2001 From: kaleb-himes Date: Wed, 2 Mar 2016 11:39:34 -0700 Subject: [PATCH 3/4] clean up braces left over from local declaration of ready --- wolfssl/test.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/wolfssl/test.h b/wolfssl/test.h index 4731132c0..1a8386541 100644 --- a/wolfssl/test.h +++ b/wolfssl/test.h @@ -846,7 +846,6 @@ static INLINE void tcp_accept(SOCKET_T* sockfd, SOCKET_T* clientfd, #if defined(_POSIX_THREADS) && defined(NO_MAIN_DRIVER) && !defined(__MINGW32__) /* signal ready to tcp_accept */ - { if (args) ready = args->signal; if (ready) { @@ -856,7 +855,6 @@ static INLINE void tcp_accept(SOCKET_T* sockfd, SOCKET_T* clientfd, pthread_cond_signal(&ready->cond); pthread_mutex_unlock(&ready->mutex); } - } #elif defined (WOLFSSL_TIRTOS) /* Need mutex? */ if (args) From 7a599c13098f5d8ba506f38601a1153602571585 Mon Sep 17 00:00:00 2001 From: kaleb-himes Date: Wed, 2 Mar 2016 16:31:58 -0700 Subject: [PATCH 4/4] Account for not used case --- wolfssl/test.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wolfssl/test.h b/wolfssl/test.h index 1a8386541..1b1db4575 100644 --- a/wolfssl/test.h +++ b/wolfssl/test.h @@ -836,6 +836,8 @@ static INLINE void tcp_accept(SOCKET_T* sockfd, SOCKET_T* clientfd, socklen_t client_len = sizeof(client); tcp_ready* ready = NULL; + (void) ready; /* Account for case when "ready" is not used */ + if (udp) { udp_accept(sockfd, clientfd, useAnyAddr, port, args); return;