]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Pull request #4866: decompress : unit test for snort 3 vba decompression divide-by...
authorSaikrishna Ramdeni (sramdeni) <sramdeni@cisco.com>
Wed, 20 Aug 2025 07:20:48 +0000 (07:20 +0000)
committerLokesh Bevinamarad (lbevinam) <lbevinam@cisco.com>
Wed, 20 Aug 2025 07:20:48 +0000 (07:20 +0000)
Merge in SNORT/snort3 from ~SRAMDENI/snort3:divide_by_zero_crasher_fix_ut to master

Squashed commit of the following:

commit 88af776caee8260b7d2287186b3bfc7a20536119
Author: sramdeni <sramdeni@cisco.com>
Date:   Wed Aug 13 23:26:56 2025 +0530

    decompress : added unit test for vba decompress divide-by-zero fix

src/decompress/file_olefile.h
src/decompress/file_oleheader.h
src/decompress/test/file_olefile_test.cc

index de5a760959b2c49c2231091752f7e14c2e82897b..452068f98439a49d90c90eb751573a2c106c04d3 100644 (file)
@@ -273,6 +273,11 @@ private:
     int32_t fat_list_len = 0;
     int32_t* mini_fat_list = nullptr;
     int32_t mini_fat_list_len = 0;
+
+#ifdef UNIT_TEST
+public:
+    void set_header(OleHeader* h) { header = h; }
+#endif
 };
 
 void oleprocess(const uint8_t* const, const uint32_t, uint8_t*&, uint32_t&);
index 77d02c87390bba142e708d5dbad7d8f93ca6e44f..cee109685d886cf202d0fb2e13a2fd6d95ff3155 100644 (file)
@@ -102,6 +102,11 @@ private:
     int32_t difat_array[MAX_DIFAT_SECTORS] = {};
 
     byte_order_endianess byte_order_endian = LITL_END;
+
+#ifdef UNIT_TEST
+public:
+    void set_mini_sector_size_raw(uint16_t val) { mini_sector_size = val; }
+#endif
 };
 #endif
 
index 58d59554ded25bfea753bd2583f35d6c33d21b3c..b915697c63776cf7a2343aa3c63b6ec38c1e7625 100644 (file)
@@ -182,6 +182,18 @@ TEST(Olefile_ole, bytes_to_copy_test)
     delete olefile;
 }
 
+TEST(Olefile_ole, get_mini_fat_offset_divide_by_zero)
+{
+    uint8_t dummy_buf[512] = {0};
+    OleFile* olefile = new OleFile(dummy_buf, sizeof(dummy_buf));
+    OleHeader* test_header = new OleHeader();
+    test_header->set_mini_sector_size_raw(0);
+    olefile->set_header(test_header);
+    int32_t result = olefile->get_mini_fat_offset(0);
+    CHECK(result == -1);
+    delete olefile;
+}
+
 TEST_GROUP(fat_mini_fat_list)
 {
 };