]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
detect/base64: minor cleanups
authorShivani Bhardwaj <shivani@oisf.net>
Tue, 23 Jul 2024 11:22:35 +0000 (16:52 +0530)
committerVictor Julien <victor@inliniac.net>
Mon, 23 Sep 2024 16:59:25 +0000 (18:59 +0200)
1. decode_len can be u32 as it stores min of two u32s.
2. Add defensive check for payload_len calculation underflow.

src/detect-base64-decode.c

index db82a033b1ff057ec8d646588453406cc91520d3..59796aa760cfb5976f14d8c9e754de49cae27d45 100644 (file)
@@ -67,7 +67,6 @@ int DetectBase64DecodeDoMatch(DetectEngineThreadCtx *det_ctx, const Signature *s
     const SigMatchData *smd, const uint8_t *payload, uint32_t payload_len)
 {
     DetectBase64Decode *data = (DetectBase64Decode *)smd->ctx;
-    int decode_len;
 
 #if 0
     printf("Input data:\n");
@@ -76,6 +75,7 @@ int DetectBase64DecodeDoMatch(DetectEngineThreadCtx *det_ctx, const Signature *s
 
     if (data->relative) {
         payload += det_ctx->buffer_offset;
+        DEBUG_VALIDATE_BUG_ON(det_ctx->buffer_offset > payload_len);
         payload_len -= det_ctx->buffer_offset;
     }
 
@@ -87,9 +87,7 @@ int DetectBase64DecodeDoMatch(DetectEngineThreadCtx *det_ctx, const Signature *s
         payload_len -= data->offset;
     }
 
-    decode_len = MIN(payload_len, data->bytes);
-
-    DEBUG_VALIDATE_BUG_ON(decode_len < 0);
+    uint32_t decode_len = MIN(payload_len, data->bytes);
 #if 0
     printf("Decoding:\n");
     PrintRawDataFp(stdout, payload, decode_len);