From efef641a09572a6f68072f786c76163757eb455c Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan@dovecot.fi>
Date: Thu, 7 Jul 2016 18:18:35 +0200
Subject: [PATCH] extprograms plugin: Execution errors in filter and execute
 commands did not lead to script termination.

---
 src/plugins/sieve-extprograms/cmd-execute.c | 7 ++++---
 src/plugins/sieve-extprograms/cmd-filter.c  | 7 +++++--
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/plugins/sieve-extprograms/cmd-execute.c b/src/plugins/sieve-extprograms/cmd-execute.c
index 6c1fb6daf..f868595bd 100644
--- a/src/plugins/sieve-extprograms/cmd-execute.c
+++ b/src/plugins/sieve-extprograms/cmd-execute.c
@@ -441,9 +441,10 @@ static int cmd_execute_operation_execute
 	if ( outbuf != NULL ) 
 		buffer_free(&outbuf);
 
-	if ( is_test )
+	if ( is_test ) {
 		sieve_interpreter_set_test_result(renv->interp, ( ret > 0 ));
-
-	return SIEVE_EXEC_OK;
+		return SIEVE_EXEC_OK;
+	}
+	return ( ret >= 0 ? SIEVE_EXEC_OK : SIEVE_EXEC_FAILURE );
 }
 
diff --git a/src/plugins/sieve-extprograms/cmd-filter.c b/src/plugins/sieve-extprograms/cmd-filter.c
index 77bd35899..6b0bc0976 100644
--- a/src/plugins/sieve-extprograms/cmd-filter.c
+++ b/src/plugins/sieve-extprograms/cmd-filter.c
@@ -231,9 +231,12 @@ static int cmd_filter_operation_execute
 			"filter action: program indicated false result");
 	}
 
-	if ( is_test )
+	if ( is_test ) {
 		sieve_interpreter_set_test_result(renv->interp, ( ret > 0 ));
 
-	return SIEVE_EXEC_OK;
+		return SIEVE_EXEC_OK;
+	}
+
+	return ( ret >= 0 ? SIEVE_EXEC_OK : SIEVE_EXEC_FAILURE );
 }
 
-- 
GitLab