From: Victor Julien Date: Mon, 27 Jun 2022 14:20:02 +0000 (+0200) Subject: mime/base64: fix final data not getting processed X-Git-Tag: suricata-7.0.0-beta1~420 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0d6ab727c55cbda04404ec44c5aa6582f3922478;p=thirdparty%2Fsuricata.git 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. --- 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) {