From 5f059306fdf41da7038734c4629851e0ac249bde Mon Sep 17 00:00:00 2001 From: David Garske Date: Wed, 12 Aug 2020 10:00:10 -0700 Subject: [PATCH] Fix for case with `ssl->error` not being set. --- src/internal.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/internal.c b/src/internal.c index bc5043317..dc57df024 100644 --- a/src/internal.c +++ b/src/internal.c @@ -17642,7 +17642,8 @@ int SendData(WOLFSSL* ssl, const void* data, int sz) if (ssl->earlyData != no_early_data) { if (ssl->options.handShakeState == HANDSHAKE_DONE) { WOLFSSL_MSG("handshake complete, trying to send early data"); - return BUILD_MSG_ERROR; + ssl->error = BUILD_MSG_ERROR; + return WOLFSSL_FATAL_ERROR; } #ifdef WOLFSSL_EARLY_DATA_GROUP groupMsgs = 1; @@ -17830,7 +17831,7 @@ int ReceiveData(WOLFSSL* ssl, byte* output, int sz, int peek) return WOLFSSL_CBIO_ERR_WANT_READ; } #endif - return err; + return err; } } @@ -17840,7 +17841,7 @@ startScr: int err; WOLFSSL_MSG("Need to start scr, server requested"); if ( (err = wolfSSL_Rehandshake(ssl)) != WOLFSSL_SUCCESS) - return err; + return err; ssl->secure_renegotiation->startScr = 0; /* only start once */ } #endif @@ -17850,14 +17851,14 @@ startScr: WOLFSSL_ERROR(ssl->error); if (ssl->error == ZERO_RETURN) { WOLFSSL_MSG("Zero return, no more data coming"); - return 0; /* no more data coming */ + return 0; /* no more data coming */ } if (ssl->error == SOCKET_ERROR_E) { if (ssl->options.connReset || ssl->options.isClosed) { WOLFSSL_MSG("Peer reset or closed, connection done"); ssl->error = SOCKET_PEER_CLOSED_E; WOLFSSL_ERROR(ssl->error); - return 0; /* peer reset or closed */ + return 0; /* peer reset or closed */ } } return ssl->error;