From 561746081f633245b326e31e6ef0f2ef20b48ef6 Mon Sep 17 00:00:00 2001 From: vincent-richard Date: Tue, 25 Jan 2022 10:28:20 +0100 Subject: Fixed possible recursion crash when parsing mailbox groups. --- tests/parser/mailboxGroupTest.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'tests/parser/mailboxGroupTest.cpp') 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; + mgrp.parse("group1:mbox1@domain.com,group2:mbox2@domain.com;,mbox3@domain.com;"); + + VASSERT_EQ("name", "group1", mgrp.getName().getWholeBuffer()); + VASSERT_EQ("count", 2, mgrp.getMailboxCount()); + VASSERT_EQ("mbox1", "mbox1@domain.com", mgrp.getMailboxAt(0)->getEmail()); + VASSERT_EQ("mbox2", "mbox3@domain.com", 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 -- cgit v1.2.3