From 4635acae53959f677b2b6beb0377e1fce4b7745f Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan.bosch@open-xchange.com> Date: Mon, 8 Jun 2020 19:26:45 +0200 Subject: [PATCH] testsuite: Properly check address value parsed from message. Caused a panic when input was not valid. This is only relevant to the test suite and doesn't occur anywhere else (apart from the previous similar commit for lib-sieve-tool). Panic was: Panic in file smtp-address.c: line 684 (smtp_address_write): assertion failed: (smtp_char_is_qpair(*p))` --- src/testsuite/testsuite-message.c | 5 +++- tests/extensions/vacation/smtp.svtest | 42 +++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/src/testsuite/testsuite-message.c b/src/testsuite/testsuite-message.c index c04ab3445..c0105a2d6 100644 --- a/src/testsuite/testsuite-message.c +++ b/src/testsuite/testsuite-message.c @@ -48,6 +48,7 @@ static const struct smtp_address * testsuite_message_get_address(struct mail *mail, const char *header) { struct message_address *addr; + struct smtp_address *smtp_addr; const char *str; if (mail_get_first_header(mail, header, &str) <= 0) @@ -57,7 +58,9 @@ testsuite_message_get_address(struct mail *mail, const char *header) strlen(str), 1, 0); if (addr == NULL || addr->mailbox == NULL || *addr->mailbox == '\0') return NULL; - return smtp_address_create_temp(addr->mailbox, addr->domain); + if (smtp_address_create_from_msg_temp(addr, &smtp_addr) < 0) + return NULL; + return smtp_addr; } static void testsuite_message_set_data(struct mail *mail) diff --git a/tests/extensions/vacation/smtp.svtest b/tests/extensions/vacation/smtp.svtest index 745192a10..40dbd89aa 100644 --- a/tests/extensions/vacation/smtp.svtest +++ b/tests/extensions/vacation/smtp.svtest @@ -155,3 +155,45 @@ test "Cc" { test_fail "envelope sender not null"; } } + +test_result_reset; + +test_set "message" text: +From: stephan@example.org +Subject: No subject of discussion +To: nicëøôçêè—öxample.org + +Frop +. +; + +test "Bad recipient address (from message)" { + vacation :subject "Tulips" "I am not in today!"; + + if not test_result_execute { + test_fail "execution of result failed"; + } + +} + +test_result_reset; + +test_set "message" text: +From: stephan@example.org +Subject: No subject of discussion +To: tss@example.net + +Frop +. +; + +test_set "envelope.to" "nicëøôçêè—öxample.org"; + +test "Bad recipient address (from envelope)" { + vacation :subject "Tulips" "I am not in today!"; + + if not test_result_execute { + test_fail "execution of result failed"; + } + +} -- GitLab