From be172af3cdb8e008da9229ce9110fdf75fb5aae1 Mon Sep 17 00:00:00 2001 From: Marco Oliverio Date: Wed, 18 May 2022 18:35:44 +0200 Subject: [PATCH] internal.c: check that we have data before processing messages We should never encounter this bug under normal circumstances. But if we enter processReplyEx with a wrongly `ssl->options.processReply` set to `runProcessingOneMessage` we check that we have some data. --- src/internal.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/internal.c b/src/internal.c index cceb86d5b..0942bf100 100644 --- a/src/internal.c +++ b/src/internal.c @@ -17396,6 +17396,10 @@ int ProcessReplyEx(WOLFSSL* ssl, int allowSocketErr) /* the record layer is here */ case runProcessingOneMessage: + /* can't process a message if we have no data. */ + if (ssl->buffers.inputBuffer.idx + >= ssl->buffers.inputBuffer.length) + return BUFFER_ERROR; #if defined(HAVE_ENCRYPT_THEN_MAC) && !defined(WOLFSSL_AEAD_ONLY) if (IsEncryptionOn(ssl, 0) && ssl->options.startedETMRead) {