From 571964e9d5107b3d691c66055260ed31e1bdcf90 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan.bosch@open-xchange.com>
Date: Mon, 8 Jun 2020 19:26:40 +0200
Subject: [PATCH] lib-sieve: sieve-interpreter - Add
 sieve_interpreter_program_jump_to().

---
 src/lib-sieve/sieve-interpreter.c | 15 +++++++++++++++
 src/lib-sieve/sieve-interpreter.h |  3 +++
 2 files changed, 18 insertions(+)

diff --git a/src/lib-sieve/sieve-interpreter.c b/src/lib-sieve/sieve-interpreter.c
index 94a0d0899..2669e21bf 100644
--- a/src/lib-sieve/sieve-interpreter.c
+++ b/src/lib-sieve/sieve-interpreter.c
@@ -815,6 +815,21 @@ sieve_interpreter_do_program_jump(struct sieve_interpreter *interp,
 	return SIEVE_EXEC_OK;
 }
 
+int sieve_interpreter_program_jump_to(struct sieve_interpreter *interp,
+				      sieve_size_t jmp_target,
+				      bool break_loops)
+{
+	int ret;
+
+	ret = sieve_interpreter_check_program_jump(interp, jmp_target,
+						   break_loops);
+	if (ret <= 0)
+		return ret;
+
+	return sieve_interpreter_do_program_jump(
+		interp, jmp_target, break_loops);
+}
+
 int sieve_interpreter_program_jump(struct sieve_interpreter *interp,
 				   bool jump, bool break_loops)
 {
diff --git a/src/lib-sieve/sieve-interpreter.h b/src/lib-sieve/sieve-interpreter.h
index 89b98e523..ec380293c 100644
--- a/src/lib-sieve/sieve-interpreter.h
+++ b/src/lib-sieve/sieve-interpreter.h
@@ -92,6 +92,9 @@ void sieve_interpreter_interrupt(struct sieve_interpreter *interp);
 sieve_size_t
 sieve_interpreter_program_counter(struct sieve_interpreter *interp);
 
+int sieve_interpreter_program_jump_to(struct sieve_interpreter *interp,
+				      sieve_size_t jmp_target,
+				      bool break_loops);
 int sieve_interpreter_program_jump(struct sieve_interpreter *interp, bool jump,
 				   bool break_loops);
 
-- 
GitLab