From f62ebed97e7d2e2fdfa3f72d61032449b3c5be57 Mon Sep 17 00:00:00 2001 From: "Russ Combs (rucombs)" Date: Fri, 10 Jun 2016 15:21:49 -0400 Subject: [PATCH] Merge pull request #513 in SNORT/snort3 from obfuscator_test_fix to master Squashed commit of the following: commit fe083f26df18ae94968dcca1e8f5017d4329922a Author: Victor Roemer Date: Thu Jun 9 18:57:27 2016 -0400 Fix Test_{1,2,3}_Block tests. Add Test_3_Block_with_Gaps --- src/log/test/obfuscator_test.cc | 159 ++++++++++++++++++-------------- 1 file changed, 90 insertions(+), 69 deletions(-) diff --git a/src/log/test/obfuscator_test.cc b/src/log/test/obfuscator_test.cc index ae697e404..ee5efc7ce 100644 --- a/src/log/test/obfuscator_test.cc +++ b/src/log/test/obfuscator_test.cc @@ -29,124 +29,145 @@ TEST_GROUP(ObfuscatorTests) TEST(ObfuscatorTests, Test_1_Block) { - char buf[70]; - memset(buf, 'A', sizeof(buf)-1); - buf[ sizeof(buf)-1 ] = '\0'; + char buf[70]; + memset(buf, 'A', sizeof(buf)-1); + buf[ sizeof(buf)-1 ] = '\0'; - Obfuscator ob; + Obfuscator ob; - ob.push(0, sizeof(buf)-1); + ob.push(0, sizeof(buf)-1); ObfuscatorBlock b; - for ( bool more = ob.first(b); - more == true; - more = ob.next(b) ) - memset(&buf[ b.offset ], '.', b.length); + for ( bool more = ob.first(b); more; more = ob.next(b) ) + memset(&buf[ b.offset ], '.', b.length); - char buf2[sizeof(buf)]; - memset(buf2, '.', sizeof(buf2)-1); + char buf2[sizeof(buf)]; + memset(buf2, '.', sizeof(buf2)-1); + buf2[ sizeof(buf2)-1 ] = '\0'; - CHECK_TRUE( memcmp(buf, buf2, sizeof(buf)) ); + CHECK_TRUE(memcmp(buf, buf2, sizeof(buf)) == 0); } TEST(ObfuscatorTests, Test_2_Block) { - char buf[70]; - memset(buf, 'A', sizeof(buf)-1); - buf[ sizeof(buf)-1 ] = '\0'; + char buf[70]; + memset(buf, 'A', sizeof(buf)-1); + buf[ sizeof(buf)-1 ] = '\0'; - Obfuscator ob; + Obfuscator ob; - ob.push(0, 10); - ob.push(12, sizeof(buf)-13); + ob.push(0, 10); + ob.push(10, sizeof(buf)-10-1); ObfuscatorBlock b; - for ( bool more = ob.first(b); more == true; more = ob.next(b) ) - memset(&buf[ b.offset ], '.', b.length); + for ( bool more = ob.first(b); more; more = ob.next(b) ) + memset(&buf[ b.offset ], '.', b.length); - char buf2[sizeof(buf)]; - memset(buf2, '.', sizeof(buf2)-1); + char buf2[sizeof(buf)]; + memset(buf2, '.', sizeof(buf2)-1); + buf2[ sizeof(buf2)-1 ] = '\0'; - CHECK_TRUE( memcmp(buf, buf2, sizeof(buf)) ); + CHECK_TRUE(memcmp(buf, buf2, sizeof(buf)) == 0); } TEST(ObfuscatorTests, Test_3_Block) { - char buf[70]; - memset(buf, 'A', sizeof(buf)-1); - buf[ sizeof(buf)-1 ] = '\0'; + char buf[70]; + memset(buf, 'A', sizeof(buf)-1); + buf[ sizeof(buf)-1 ] = '\0'; - Obfuscator ob; + Obfuscator ob; - ob.push(0, 10); - ob.push(12, 10); - ob.push(23, 10); + ob.push(0, 10); + ob.push(10, 10); + ob.push(20, sizeof(buf)-20-1); ObfuscatorBlock b; - for ( bool more = ob.first(b); more == true; more = ob.next(b) ) - memset(&buf[ b.offset ], '.', b.length); + for ( bool more = ob.first(b); more; more = ob.next(b) ) + memset(&buf[ b.offset ], '.', b.length); - char buf2[sizeof(buf)]; - memset(buf2, '.', sizeof(buf2)-1); + char buf2[sizeof(buf)]; + memset(buf2, '.', sizeof(buf2)-1); + buf2[ sizeof(buf2)-1 ] = '\0'; - CHECK_TRUE( memcmp(buf, buf2, sizeof(buf)) ); + CHECK_TRUE(memcmp(buf, buf2, sizeof(buf)) == 0); +} + +TEST(ObfuscatorTests, Test_3_Block_with_Gaps) +{ + char buf[70]; + memset(buf, 'A', sizeof(buf)-1); + buf[ sizeof(buf)-1 ] = '\0'; + + Obfuscator ob; + + ob.push(0, 10); // 0-9 '..........' + ob.push(20, 10); // 10-19 'AAAAAAAAAA' 20-29 '..........' + ob.push(40, sizeof(buf)-40-1); // 30-39 'AAAAAAAAAA' 40-68 '.............................' 69 '\0' + + ObfuscatorBlock b; + for ( bool more = ob.first(b); more; more = ob.next(b) ) + memset(&buf[ b.offset ], '.', b.length); + + const char buf2[70] = "..........AAAAAAAAAA..........AAAAAAAAAA............................."; + CHECK_TRUE(memcmp(buf, buf2, sizeof(buf)) == 0); } TEST(ObfuscatorTests, EmptyListTest) { - Obfuscator ob; + Obfuscator ob; ObfuscatorBlock b; - CHECK_FALSE( ob.first(b) ); + CHECK_FALSE(ob.first(b)); } TEST(ObfuscatorTests, EmptyList2Test) { - Obfuscator ob; + Obfuscator ob; ObfuscatorBlock b; - CHECK_FALSE( ob.next(b) ); + CHECK_FALSE(ob.next(b)); } TEST(ObfuscatorTests, EmptyList3Test) { - Obfuscator ob; - ob.push(0, 69); + Obfuscator ob; + ob.push(0, 69); ObfuscatorBlock b; - CHECK_TRUE( ob.first(b) ); - CHECK_FALSE( ob.next(b) ); - CHECK_FALSE( ob.next(b) ); + CHECK_TRUE(ob.first(b) ); + CHECK_FALSE(ob.next(b) ); + CHECK_FALSE(ob.next(b) ); } TEST(ObfuscatorTests, NoExactMatch) { - Obfuscator ob; - ob.push(0, 1); - ob.push(0, 1); - ob.push(0, 1); - ob.push(0, 1); - ob.push(0, 1); - ob.push(0, 1); - ob.push(0, 1); - ob.push(0, 1); + Obfuscator ob; + ob.push(0, 1); + ob.push(0, 1); + ob.push(0, 1); + ob.push(0, 1); + ob.push(0, 1); + ob.push(0, 1); + ob.push(0, 1); + ob.push(0, 1); auto b = ob.begin(); - CHECK_TRUE( ++b == ob.end() ); + CHECK_TRUE(++b == ob.end()); } TEST(ObfuscatorTests, UpdateExactMatch) { - Obfuscator ob; - ob.push(0, 1); - ob.push(0, 2); - ob.push(0, 3); - ob.push(0, 4); - ob.push(0, 5); - ob.push(0, 6); - ob.push(0, 7); - ob.push(0, 8); + Obfuscator ob; + ob.push(0, 1); + ob.push(0, 2); + ob.push(0, 3); + ob.push(0, 4); + ob.push(0, 5); + ob.push(0, 6); + ob.push(0, 7); + ob.push(0, 8); auto b = ob.begin(); - CHECK_TRUE( ++b == ob.end() ); + CHECK_TRUE(++b == ob.end()); } // @@ -154,7 +175,7 @@ TEST(ObfuscatorTests, UpdateExactMatch) // TEST(ObfuscatorTests, SortedElements) { - Obfuscator ob; + Obfuscator ob; ob.push(50,0); ob.push(100,0); ob.push(0,0); @@ -162,14 +183,14 @@ TEST(ObfuscatorTests, SortedElements) uint32_t last = 0; for ( auto &b: ob ) { - CHECK_TRUE( last <= b.offset ); + CHECK_TRUE(last <= b.offset); last = b.offset; } } TEST(ObfuscatorTests, Overlaps) { - Obfuscator ob; + Obfuscator ob; ob.push(50,49); ob.push(100,1); ob.push(0,100); @@ -177,12 +198,12 @@ TEST(ObfuscatorTests, Overlaps) uint32_t last = 0; for ( auto &b: ob ) { - CHECK_TRUE( last <= b.offset ); + CHECK_TRUE(last <= b.offset); last = b.offset; } } -int main(int argc, char *argv[]) +int main(int argc, char* argv[]) { return CommandLineTestRunner::RunAllTests(argc, argv); } -- 2.47.3