From db23d8a0cf2e08daee6c0d1fe18fc765192f66b9 Mon Sep 17 00:00:00 2001 From: Marco Oliverio Date: Tue, 10 May 2022 12:41:36 +0200 Subject: [PATCH] internal.c: don't skip records if we don't process early-data If we don't process early data, we want to skip only the current record and not all the received data --- src/internal.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/internal.c b/src/internal.c index a9bddbdf6..4b637bd33 100644 --- a/src/internal.c +++ b/src/internal.c @@ -16278,7 +16278,10 @@ int DoApplicationData(WOLFSSL* ssl, byte* input, word32* inOutIdx, int sniff) } if (!process) { WOLFSSL_MSG("Ignoring EarlyData!"); - *inOutIdx = ssl->buffers.inputBuffer.length; + *inOutIdx += ssl->curSize; + if (*inOutIdx > ssl->buffers.inputBuffer.length) + return BUFFER_E; + return 0; } } @@ -17285,8 +17288,11 @@ int ProcessReplyEx(WOLFSSL* ssl, int allowSocketErr) if (ssl->keys.peer_sequence_number_lo-- == 0) ssl->keys.peer_sequence_number_hi--; ssl->options.processReply = doProcessInit; - ssl->buffers.inputBuffer.idx = - ssl->buffers.inputBuffer.length; + ssl->buffers.inputBuffer.idx += ssl->curSize; + if (ssl->buffers.inputBuffer.idx > + ssl->buffers.inputBuffer.length) + return BUFFER_E; + return 0; } WOLFSSL_MSG("Too much EarlyData!");