From ca5e55cb64e67043023d121ca72294bbcae3a0eb Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan@rename-it.nl>
Date: Sat, 3 Jul 2010 17:04:06 +0200
Subject: [PATCH] ManageSieve: check for DUMP_CAPABILITY=1 before executing
 dump capability to prevent infinite recursion.

---
 src/managesieve-login/managesieve-login-settings-plugin.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/managesieve-login/managesieve-login-settings-plugin.c b/src/managesieve-login/managesieve-login-settings-plugin.c
index 8cff0d78c..9cf84e2e0 100644
--- a/src/managesieve-login/managesieve-login-settings-plugin.c
+++ b/src/managesieve-login/managesieve-login-settings-plugin.c
@@ -15,6 +15,7 @@
 #include <unistd.h>
 #include <sys/wait.h>
 #include <sysexits.h>
+#include <stdlib.h>
 
 typedef enum { CAP_SIEVE, CAP_NOTIFY } capability_type_t;
 
@@ -105,6 +106,9 @@ static bool capability_dump(void)
 	unsigned int pos;
 	pid_t pid;
 
+	if ( getenv("DUMP_CAPABILITY") != NULL )
+		return TRUE;
+
 	if ( pipe(fd) < 0 ) {
 		i_error("managesieve-login: dump-capability pipe() failed: %m");
 		return FALSE;
@@ -196,11 +200,9 @@ static void managesieve_login_config_parser_begin(struct config_parser_context *
 		}
 	}
 
-/*	Currently fails and makes doveconf go berserk 
-
 	if ( capability_sieve != NULL )
 		managesieve_login_config_set(ctx, "managesieve_sieve_capability", capability_sieve);
 
 	if ( capability_notify != NULL )
-		managesieve_login_config_set(ctx, "managesieve_notify_capability", capability_notify);*/
+		managesieve_login_config_set(ctx, "managesieve_notify_capability", capability_notify);
 }
-- 
GitLab