From 0919411873756ceb32e3cb62e6be7169b490a2d1 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan.bosch@open-xchange.com>
Date: Fri, 19 Aug 2022 21:59:53 +0200
Subject: [PATCH] lib-managesieve: managesieve-url - Resolve static analyzer
 complaint.

---
 src/lib-managesieve/managesieve-url.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/src/lib-managesieve/managesieve-url.c b/src/lib-managesieve/managesieve-url.c
index 9d7cdb874..d2d765861 100644
--- a/src/lib-managesieve/managesieve-url.c
+++ b/src/lib-managesieve/managesieve-url.c
@@ -203,7 +203,8 @@ managesieve_url_parse_path_segment(struct managesieve_url_parser *url_parser,
 		if (*parser->cur == '%') {
 			unsigned char ch = 0;
 
-			if (segment != NULL) {
+			if (segment_r != NULL) {
+				i_assert(segment != NULL);
 				str_append_data(segment, offset,
 						parser->cur - offset);
 			}
@@ -213,8 +214,10 @@ managesieve_url_parse_path_segment(struct managesieve_url_parser *url_parser,
 				return -1;
 			i_assert(ret > 0);
 
-			if (segment != NULL)
+			if (segment_r != NULL) {
+				i_assert(segment != NULL);
 				str_append_c(segment, ch);
+			}
 			offset = parser->cur;
 			continue;
 		}
@@ -223,8 +226,10 @@ managesieve_url_parse_path_segment(struct managesieve_url_parser *url_parser,
 			break;
 		parser->cur++;
 	}
-	if (segment != NULL)
+	if (segment_r != NULL) {
+		i_assert(segment != NULL);
 		str_append_data(segment, offset, parser->cur - offset);
+	}
 
 	if (parser->cur < parser->end && *parser->cur != '/' &&
 	    *parser->cur != '?' && *parser->cur != '#') {
@@ -237,8 +242,10 @@ managesieve_url_parse_path_segment(struct managesieve_url_parser *url_parser,
 	if (first == parser->cur)
 		return 0;
 
-	if (segment != NULL)
+	if (segment_r != NULL) {
+		i_assert(segment != NULL);
 		*segment_r = p_strdup(parser->pool, str_c(segment));
+	}
 	return 1;
 }
 
-- 
GitLab