From 9f8653355a2170405eeb853e29ca1858ec28d16c Mon Sep 17 00:00:00 2001
From: Timo Sirainen <timo.sirainen@open-xchange.com>
Date: Mon, 27 Jun 2022 15:32:14 +0300
Subject: [PATCH] managesieve-login: Use client_forward_decode_base64() for
 parsing XCLIENT FORWARD

---
 src/managesieve-login/client.c | 21 +--------------------
 1 file changed, 1 insertion(+), 20 deletions(-)

diff --git a/src/managesieve-login/client.c b/src/managesieve-login/client.c
index f79218822..412ea3117 100644
--- a/src/managesieve-login/client.c
+++ b/src/managesieve-login/client.c
@@ -158,25 +158,6 @@ cmd_logout(struct managesieve_client *client,
 	return 1;
 }
 
-static int
-cmd_xclient_parse_forward(struct managesieve_client *client, const char *value)
-{
-	size_t value_len = strlen(value);
-
-	if (client->common.forward_fields != NULL)
-		str_truncate(client->common.forward_fields, 0);
-	else {
-		client->common.forward_fields =	str_new(
-			client->common.preproxy_pool,
-			MAX_BASE64_DECODED_SIZE(value_len));
-	}
-
-	if (base64_decode(value, value_len, client->common.forward_fields) < 0)
-		return -1;
-
-	return 0;
-}
-
 static int
 cmd_xclient(struct managesieve_client *client,
 	    const struct managesieve_arg *args)
@@ -194,7 +175,7 @@ cmd_xclient(struct managesieve_client *client,
 			if (net_addr2ip(value, &client->common.ip) < 0)
 				args_ok = FALSE;
 		} else if (str_begins_icase(arg, "FORWARD=", &value)) {
-			if (cmd_xclient_parse_forward(client, value) < 0)
+			if (!client_forward_decode_base64(&client->common, value))
 				args_ok = FALSE;
 		} else if (str_begins_icase(arg, "PORT=", &value)) {
 			if (net_str2port(value, &client->common.remote_port) < 0)
-- 
GitLab