diff --git a/Makefile.am b/Makefile.am
index 3249569efefb6c8f71fa54c88c9c4cdf67fbc99a..1dfb0e6f4146c03e02e0d649b52e79a06ec97907 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 9c584246a7bdbf3a0bf204abeb67375f9ef3d8fa..7762d5004a28b889dd61c12a58f6b123d2418eb1 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 0000000000000000000000000000000000000000..c1c22dcf59b6e88e8d3e38ce034cf223e9c60448
--- /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;
+}