changeset 22887:075c48f8ffb5

global: Call rfc822_parser_deinit() wherever possible
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Fri, 22 Dec 2017 18:58:11 +0200
parents d1cb41cdebe1
children 2934b16c4b5b
files src/lib-mail/istream-attachment-extractor.c src/lib-mail/message-address.c src/lib-mail/message-date.c src/lib-mail/message-decoder.c src/lib-mail/message-id.c src/lib-mail/message-parser.c src/lib-mail/message-part-data.c src/lib-mail/message-search.c src/lib-mail/test-rfc2231-parser.c src/lib-mail/test-rfc822-parser.c src/plugins/fts/fts-build-mail.c src/plugins/fts/fts-parser-script.c
diffstat 12 files changed, 29 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-mail/istream-attachment-extractor.c	Tue Jan 09 11:33:59 2018 -0500
+++ b/src/lib-mail/istream-attachment-extractor.c	Fri Dec 22 18:58:11 2017 +0200
@@ -87,6 +87,7 @@
 		(void)rfc822_parse_content_type(&parser, content_type);
 		astream->part.content_type = i_strdup(str_c(content_type));
 	} T_END;
+	rfc822_parser_deinit(&parser);
 }
 
 static void
--- a/src/lib-mail/message-address.c	Tue Jan 09 11:33:59 2018 -0500
+++ b/src/lib-mail/message-address.c	Fri Dec 22 18:58:11 2017 +0200
@@ -403,6 +403,7 @@
 	} else {
 		(void)parse_address_list(&ctx, max_addresses);
 	}
+	rfc822_parser_deinit(&ctx.parser);
 	return ctx.first_addr;
 }
 
--- a/src/lib-mail/message-date.c	Tue Jan 09 11:33:59 2018 -0500
+++ b/src/lib-mail/message-date.c	Fri Dec 22 18:58:11 2017 +0200
@@ -252,6 +252,7 @@
 		ctx.str = t_str_new(128);
 		success = message_date_parser_tokens(&ctx, timestamp_r,
 						     timezone_offset_r);
+		rfc822_parser_deinit(&ctx.parser);
 	} T_END;
 
 	return success;
--- a/src/lib-mail/message-decoder.c	Tue Jan 09 11:33:59 2018 -0500
+++ b/src/lib-mail/message-decoder.c	Fri Dec 22 18:58:11 2017 +0200
@@ -117,6 +117,7 @@
 			message_cte = MESSAGE_CTE_QP;
 		break;
 	}
+	rfc822_parser_deinit(&parser);
 	return message_cte;
 }
 
@@ -137,8 +138,10 @@
 	str = t_str_new(64);
 	ret = rfc822_parse_content_type(&parser, str);
 	ctx->content_type = i_strdup(str_c(str));
-	if (ret < 0)
+	if (ret < 0) {
+		rfc822_parser_deinit(&parser);
 		return;
+	}
 
 	rfc2231_parse(&parser, &results);
 	for (; *results != NULL; results += 2) {
@@ -147,6 +150,7 @@
 			break;
 		}
 	}
+	rfc822_parser_deinit(&parser);
 }
 
 static bool message_decode_header(struct message_decoder_context *ctx,
--- a/src/lib-mail/message-id.c	Tue Jan 09 11:33:59 2018 -0500
+++ b/src/lib-mail/message-id.c	Fri Dec 22 18:58:11 2017 +0200
@@ -39,6 +39,7 @@
 			success = TRUE;
 		}
 	}
+	rfc822_parser_deinit(&parser);
 	return success;
 }
 
--- a/src/lib-mail/message-parser.c	Tue Jan 09 11:33:59 2018 -0500
+++ b/src/lib-mail/message-parser.c	Fri Dec 22 18:58:11 2017 +0200
@@ -501,8 +501,10 @@
 
 	if (ret < 0 ||
 	    (ctx->part->flags & MESSAGE_PART_FLAG_MULTIPART) == 0 ||
-	    ctx->last_boundary != NULL)
+	    ctx->last_boundary != NULL) {
+		rfc822_parser_deinit(&parser);
 		return;
+	}
 
 	rfc2231_parse(&parser, &results);
 	for (; *results != NULL; results += 2) {
@@ -512,6 +514,7 @@
 			break;
 		}
 	}
+	rfc822_parser_deinit(&parser);
 }
 
 static bool block_is_at_eoh(const struct message_block *block)
--- a/src/lib-mail/message-part-data.c	Tue Jan 09 11:33:59 2018 -0500
+++ b/src/lib-mail/message-part-data.c	Fri Dec 22 18:58:11 2017 +0200
@@ -309,6 +309,7 @@
 	parse_mime_parameters(&parser, pool,
 		&data->content_type_params,
 		&data->content_type_params_count);
+	rfc822_parser_deinit(&parser);
 }
 
 static void
@@ -327,6 +328,7 @@
 		data->content_transfer_encoding =
 			p_strdup(pool, str_c(str));
 	}
+	rfc822_parser_deinit(&parser);
 }
 
 static void
@@ -340,13 +342,16 @@
 	rfc822_skip_lwsp(&parser);
 
 	str = t_str_new(256);
-	if (rfc822_parse_mime_token(&parser, str) < 0)
+	if (rfc822_parse_mime_token(&parser, str) < 0) {
+		rfc822_parser_deinit(&parser);
 		return;
+	}
 	data->content_disposition = p_strdup(pool, str_c(str));
 
 	parse_mime_parameters(&parser, pool,
 		&data->content_disposition_params,
 		&data->content_disposition_params_count);
+	rfc822_parser_deinit(&parser);
 }
 
 static void
@@ -379,6 +384,7 @@
 		parser.data++;
 		rfc822_skip_lwsp(&parser);
 	}
+	rfc822_parser_deinit(&parser);
 
 	if (array_count(&langs) > 0) {
 		array_append_zero(&langs);
--- a/src/lib-mail/message-search.c	Tue Jan 09 11:33:59 2018 -0500
+++ b/src/lib-mail/message-search.c	Fri Dec 22 18:58:11 2017 +0200
@@ -61,6 +61,7 @@
 	ctx->content_type_text =
 		strncasecmp(str_c(content_type), "text/", 5) == 0 ||
 		strncasecmp(str_c(content_type), "message/", 8) == 0;
+	rfc822_parser_deinit(&parser);
 }
 
 static void handle_header(struct message_search_context *ctx,
--- a/src/lib-mail/test-rfc2231-parser.c	Tue Jan 09 11:33:59 2018 -0500
+++ b/src/lib-mail/test-rfc2231-parser.c	Fri Dec 22 18:58:11 2017 +0200
@@ -36,6 +36,7 @@
 	test_assert(rfc2231_parse(&parser, &result) == 0);
 	for (i = 0; output[i] != NULL && result[i] != NULL; i++)
 		test_assert(strcmp(output[i], result[i]) == 0);
+	rfc822_parser_deinit(&parser);
 	test_assert(output[i] == NULL && result[i] == NULL);
 	test_end();
 }
--- a/src/lib-mail/test-rfc822-parser.c	Tue Jan 09 11:33:59 2018 -0500
+++ b/src/lib-mail/test-rfc822-parser.c	Fri Dec 22 18:58:11 2017 +0200
@@ -31,6 +31,7 @@
 		test_assert_idx(rfc822_parse_quoted_string(&parser, str) == tests[i].ret, i);
 		test_assert_idx(tests[i].ret < 0 ||
 				strcmp(tests[i].output, str_c(str)) == 0, i);
+		rfc822_parser_deinit(&parser);
 		str_truncate(str, 0);
 	}
 	test_end();
@@ -60,6 +61,7 @@
 		test_assert_idx(strcmp(output[i].value, value) == 0, i);
 		i++;
 	}
+	rfc822_parser_deinit(&parser);
 	test_assert(ret == 0);
 	test_assert(i == N_ELEMENTS(output));
 	test_end();
--- a/src/plugins/fts/fts-build-mail.c	Tue Jan 09 11:33:59 2018 -0500
+++ b/src/plugins/fts/fts-build-mail.c	Fri Dec 22 18:58:11 2017 +0200
@@ -56,6 +56,7 @@
 		(void)rfc822_parse_content_type(&parser, content_type);
 		ctx->content_type = str_lcase(i_strdup(str_c(content_type)));
 	} T_END;
+	rfc822_parser_deinit(&parser);
 }
 
 static void
--- a/src/plugins/fts/fts-parser-script.c	Tue Jan 09 11:33:59 2018 -0500
+++ b/src/plugins/fts/fts-parser-script.c	Fri Dec 22 18:58:11 2017 +0200
@@ -173,8 +173,10 @@
 
 	/* type; param; param; .. */
 	str = t_str_new(32);
-	if (rfc822_parse_mime_token(&parser, str) < 0)
+	if (rfc822_parse_mime_token(&parser, str) < 0) {
+		rfc822_parser_deinit(&parser);
 		return;
+	}
 
 	rfc2231_parse(&parser, &results);
 	filename2 = NULL;
@@ -191,6 +193,7 @@
 		   much about the filename actually, just about its extension */
 		*filename_r = filename2;
 	}
+	rfc822_parser_deinit(&parser);
 }
 
 static struct fts_parser *