From 0d6ab727c55cbda04404ec44c5aa6582f3922478 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Mon, 27 Jun 2022 16:20:02 +0200 Subject: [PATCH] mime/base64: fix final data not getting processed If the last data of the body was not a multple of 4 and not padded to be a multiple of 4, it would not be processed. --- src/util-decode-mime.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/util-decode-mime.c b/src/util-decode-mime.c index 0f47cd16a4..0187d6b753 100644 --- a/src/util-decode-mime.c +++ b/src/util-decode-mime.c @@ -1226,6 +1226,14 @@ static uint8_t ProcessBase64Remainder( state->bvr_len = cnt; } + /* in force mode pad the block */ + if (force && cnt != B64_BLOCK) { + SCLogDebug("force and cnt %u != %u", cnt, B64_BLOCK); + for (uint8_t i = state->bvr_len; i < B64_BLOCK; i++) { + state->bvremain[state->bvr_len++] = '='; + } + } + /* If data chunk buffer will be full, then clear it now */ if (DATA_CHUNK_SIZE - state->data_chunk_len < ASCII_BLOCK) {