From fd6d4798881dfb700fac615e722dd01eb567e7a4 Mon Sep 17 00:00:00 2001 From: Kareem Date: Fri, 19 Nov 2021 14:19:27 -0700 Subject: [PATCH] Rework ssl and ssl->arrays NULL checks, and add to SendTls13ClientHello as well. --- src/internal.c | 12 ++++++++---- src/tls13.c | 7 +++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/internal.c b/src/internal.c index 16d112d81..daacabe0d 100644 --- a/src/internal.c +++ b/src/internal.c @@ -22658,6 +22658,10 @@ exit_dpk: int ret; word16 extSz = 0; + if (ssl == NULL) { + return BAD_FUNC_ARG; + } + #ifdef WOLFSSL_TLS13 if (IsAtLeastTLSv1_3(ssl->version)) return SendTls13ClientHello(ssl); @@ -22666,10 +22670,6 @@ exit_dpk: WOLFSSL_START(WC_FUNC_CLIENT_HELLO_SEND); WOLFSSL_ENTER("SendClientHello"); - if (ssl == NULL || ssl->arrays == NULL) { - return BAD_FUNC_ARG; - } - if (ssl->suites == NULL) { WOLFSSL_MSG("Bad suites pointer in SendClientHello"); return SUITES_ERROR; @@ -22719,6 +22719,10 @@ exit_dpk: #endif sendSz = length + HANDSHAKE_HEADER_SZ + RECORD_HEADER_SZ; + if (ssl->arrays == NULL) { + return BAD_FUNC_ARG; + } + #ifdef WOLFSSL_DTLS if (ssl->options.dtls) { length += ENUM_LEN; /* cookie */ diff --git a/src/tls13.c b/src/tls13.c index 75761f40e..04428314f 100644 --- a/src/tls13.c +++ b/src/tls13.c @@ -3014,6 +3014,10 @@ int SendTls13ClientHello(WOLFSSL* ssl) WOLFSSL_START(WC_FUNC_CLIENT_HELLO_SEND); WOLFSSL_ENTER("SendTls13ClientHello"); + if (ssl == NULL) { + return BAD_FUNC_ARG; + } + #ifdef HAVE_SESSION_TICKET if (ssl->options.resuming && (ssl->session.version.major != ssl->version.major || @@ -3130,6 +3134,9 @@ int SendTls13ClientHello(WOLFSSL* ssl) /* Keep for downgrade. */ ssl->chVersion = ssl->version; + if (ssl->arrays == NULL) { + return BAD_FUNC_ARG; + } /* Client Random */ if (ssl->options.connectState == CONNECT_BEGIN) { ret = wc_RNG_GenerateBlock(ssl->rng, args->output + args->idx, RAN_LEN);