diff options
author | vincent-richard <[email protected]> | 2022-01-25 09:28:20 +0000 |
---|---|---|
committer | vincent-richard <[email protected]> | 2022-01-25 09:28:20 +0000 |
commit | 561746081f633245b326e31e6ef0f2ef20b48ef6 (patch) | |
tree | 3622fc283721e3ba68083b8352060e020b5ad035 /tests | |
parent | Fixed Cppcheck issues. (diff) | |
download | vmime-561746081f633245b326e31e6ef0f2ef20b48ef6.tar.gz vmime-561746081f633245b326e31e6ef0f2ef20b48ef6.zip |
Fixed possible recursion crash when parsing mailbox groups.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/parser/mailboxGroupTest.cpp | 28 | ||||
-rw-r--r-- | tests/parser/mailboxListTest.cpp | 15 |
2 files changed, 43 insertions, 0 deletions
diff --git a/tests/parser/mailboxGroupTest.cpp b/tests/parser/mailboxGroupTest.cpp index 18ff425b..00a7baad 100644 --- a/tests/parser/mailboxGroupTest.cpp +++ b/tests/parser/mailboxGroupTest.cpp @@ -32,6 +32,8 @@ VMIME_TEST_SUITE_BEGIN(mailboxGroupTest) VMIME_TEST(testParseExtraChars) VMIME_TEST(testEmptyGroup) VMIME_TEST(testEncodedEmptyGroup) + VMIME_TEST(testGroupInGroup) + VMIME_TEST(testBrokenGroup) VMIME_TEST_LIST_END @@ -104,4 +106,30 @@ VMIME_TEST_SUITE_BEGIN(mailboxGroupTest) VASSERT_EQ("count", 0, mgrp.getMailboxCount()); } + void testGroupInGroup() { + + vmime::mailboxGroup mgrp; + + VASSERT_EQ("name", "group1", mgrp.getName().getWholeBuffer()); + VASSERT_EQ("count", 2, mgrp.getMailboxCount()); + VASSERT_EQ("mbox1", "[email protected]", mgrp.getMailboxAt(0)->getEmail()); + VASSERT_EQ("mbox2", "[email protected]", mgrp.getMailboxAt(1)->getEmail()); + } + + void testBrokenGroup() { + + std::string bad(":,"); + + for (int i = 0 ; i < 10 ; ++i) { + bad = bad + bad; + } + + vmime::mailboxGroup mgrp; + mgrp.parse(bad); + + VASSERT_EQ("name", "", mgrp.getName().getWholeBuffer()); + VASSERT_EQ("count", 0, mgrp.getMailboxCount()); + } + VMIME_TEST_SUITE_END diff --git a/tests/parser/mailboxListTest.cpp b/tests/parser/mailboxListTest.cpp index 7505acd9..2036863d 100644 --- a/tests/parser/mailboxListTest.cpp +++ b/tests/parser/mailboxListTest.cpp @@ -28,6 +28,7 @@ VMIME_TEST_SUITE_BEGIN(mailboxListTest) VMIME_TEST_LIST_BEGIN VMIME_TEST(testParseGroup) + VMIME_TEST(testBrokenGroup) VMIME_TEST_LIST_END @@ -44,4 +45,18 @@ VMIME_TEST_SUITE_BEGIN(mailboxListTest) VASSERT_EQ("email", "[email protected]", mboxList.getMailboxAt(2)->getEmail().generate()); } + void testBrokenGroup() { + + std::string bad(":,"); + + for (int i = 0 ; i < 10 ; ++i) { + bad = bad + bad; + } + + vmime::mailboxList mboxList; + mboxList.parse(bad); + + VASSERT_EQ("count", 0, mboxList.getMailboxCount()); + } + VMIME_TEST_SUITE_END |