From a41f4337c605e93b80c4ad07412d4a86de7f91e6 Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan.bosch@open-xchange.com> Date: Tue, 25 Aug 2020 22:22:10 +0200 Subject: [PATCH] testsuite: testsuite-mailstore - Check mail index validity in testsuite_mailstore_mail_index(). Providing an out-of-range index caused an assert panic. Panic was: Panic: file mail-index-transaction-update.c: line 19 (mail_index_transaction_lookup): assertion failed: (seq >= t->first_new_seq && seq <= t->last_new_seq) --- Makefile.am | 1 + src/testsuite/testsuite-mailstore.c | 5 +++++ tests/failures/fuzz3.svtest | 12 ++++++++++++ 3 files changed, 18 insertions(+) create mode 100644 tests/failures/fuzz3.svtest diff --git a/Makefile.am b/Makefile.am index 3249569ef..1dfb0e6f4 100644 --- a/Makefile.am +++ b/Makefile.am @@ -196,6 +196,7 @@ $(test_cases): failure_test_cases = \ tests/failures/fuzz1.svtest \ tests/failures/fuzz2.svtest \ + tests/failures/fuzz3.svtest \ tests/failures/mailbox-bad-utf8.svtest $(failure_test_cases): diff --git a/src/testsuite/testsuite-mailstore.c b/src/testsuite/testsuite-mailstore.c index 9c584246a..7762d5004 100644 --- a/src/testsuite/testsuite-mailstore.c +++ b/src/testsuite/testsuite-mailstore.c @@ -274,11 +274,16 @@ bool testsuite_mailstore_mail_index(const struct sieve_runtime_env *renv, const char *folder, unsigned int index) { struct testsuite_mailstore_mail *tmail; + struct mailbox_status status; tmail = testsuite_mailstore_open(folder); if (tmail == NULL) return FALSE; + mailbox_get_open_status(tmail->box, STATUS_MESSAGES, &status); + if (index >= status.messages) + return FALSE; + mail_set_seq(tmail->mail, index+1); testsuite_message_set_mail(renv, tmail->mail); diff --git a/tests/failures/fuzz3.svtest b/tests/failures/fuzz3.svtest new file mode 100644 index 000000000..c1c22dcf5 --- /dev/null +++ b/tests/failures/fuzz3.svtest @@ -0,0 +1,12 @@ +require "vnd.dovecot.testsuite"; +require "fileinto"; +require "mailbox"; + +test"" { + fileinto :create "Folder"; + + if test_result_execute { + } + + test_message :folder "Folder" 2; +} -- GitLab