From 2faf53290568780e47b0e68704bab27d60b34666 Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan@rename-it.nl> Date: Tue, 3 Aug 2010 15:58:36 +0200 Subject: [PATCH] Fixed bug in error handling of store action. --- src/lib-sieve/sieve-actions.c | 3 ++- tests/execute/errors.svtest | 25 +++++++++++++++++++ .../errors/fileinto-invalid-name.sieve | 5 ++++ 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 tests/execute/errors/fileinto-invalid-name.sieve diff --git a/src/lib-sieve/sieve-actions.c b/src/lib-sieve/sieve-actions.c index b0f751751..4aa3f5990 100644 --- a/src/lib-sieve/sieve-actions.c +++ b/src/lib-sieve/sieve-actions.c @@ -408,7 +408,8 @@ static bool act_store_start *tr_context = (void *)trans; - return TRUE; + return ( trans->error_code == MAIL_ERROR_NONE || + trans->error_code == MAIL_ERROR_NOTFOUND ); } static struct mail_keywords *act_store_keywords_create diff --git a/tests/execute/errors.svtest b/tests/execute/errors.svtest index 383df8b4c..ec5c57846 100644 --- a/tests/execute/errors.svtest +++ b/tests/execute/errors.svtest @@ -2,6 +2,7 @@ require "vnd.dovecot.testsuite"; require "relational"; require "comparator-i;ascii-numeric"; +require "fileinto"; test "Action conflicts: reject <-> fileinto" { if not test_script_compile "errors/conflict-reject-fileinto.sieve" { @@ -108,3 +109,27 @@ test "Fileinto missing folder" { } } +test "Fileinto invalid folder name" { + if not test_script_compile "errors/fileinto-invalid-name.sieve" { + test_fail "compile failed"; + } + + if not test_script_run { + test_fail "execution failed"; + } + + if test_result_execute { + test_fail "execution of result should have failed"; + } + + if not test_error :count "eq" :comparator "i;ascii-numeric" "1" { + test_fail "wrong number of runtime errors reported"; + } + + if not allof ( + test_error :index 1 :contains "failed to store into mailbox", + test_error :index 1 :contains "name") { + test_fail "unexpected error reported"; + } +} + diff --git a/tests/execute/errors/fileinto-invalid-name.sieve b/tests/execute/errors/fileinto-invalid-name.sieve new file mode 100644 index 000000000..871323e0e --- /dev/null +++ b/tests/execute/errors/fileinto-invalid-name.sieve @@ -0,0 +1,5 @@ +require "fileinto"; +require "mailbox"; + +fileinto :create "foo//somedomain/org"; + -- GitLab