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!");