Skip to content

Commit

Permalink
global: Call rfc822_parser_deinit() wherever possible
Browse files Browse the repository at this point in the history
  • Loading branch information
sirainen authored and villesavolainen committed Feb 20, 2018
1 parent aa2c38f commit 9bc65e8
Show file tree
Hide file tree
Showing 12 changed files with 29 additions and 4 deletions.
1 change: 1 addition & 0 deletions src/lib-mail/istream-attachment-extractor.c
Expand Up @@ -87,6 +87,7 @@ static void parse_content_type(struct attachment_istream *astream,
(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
Expand Down
1 change: 1 addition & 0 deletions src/lib-mail/message-address.c
Expand Up @@ -404,6 +404,7 @@ message_address_parse_real(pool_t pool, const unsigned char *data, size_t size,
} else {
(void)parse_address_list(&ctx, max_addresses);
}
rfc822_parser_deinit(&ctx.parser);
return ctx.first_addr;
}

Expand Down
1 change: 1 addition & 0 deletions src/lib-mail/message-date.c
Expand Up @@ -252,6 +252,7 @@ bool message_date_parse(const unsigned char *data, size_t size,
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;
Expand Down
6 changes: 5 additions & 1 deletion src/lib-mail/message-decoder.c
Expand Up @@ -117,6 +117,7 @@ enum message_cte message_decoder_parse_cte(struct message_header_line *hdr)
message_cte = MESSAGE_CTE_QP;
break;
}
rfc822_parser_deinit(&parser);
return message_cte;
}

Expand All @@ -137,8 +138,10 @@ parse_content_type(struct message_decoder_context *ctx,
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) {
Expand All @@ -147,6 +150,7 @@ parse_content_type(struct message_decoder_context *ctx,
break;
}
}
rfc822_parser_deinit(&parser);
}

static bool message_decode_header(struct message_decoder_context *ctx,
Expand Down
1 change: 1 addition & 0 deletions src/lib-mail/message-id.c
Expand Up @@ -39,6 +39,7 @@ static bool get_untokenized_msgid(const char **msgid_p, string_t *msgid)
success = TRUE;
}
}
rfc822_parser_deinit(&parser);
return success;
}

Expand Down
5 changes: 4 additions & 1 deletion src/lib-mail/message-parser.c
Expand Up @@ -502,8 +502,10 @@ static void parse_content_type(struct message_parser_ctx *ctx,

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) {
Expand All @@ -513,6 +515,7 @@ static void parse_content_type(struct message_parser_ctx *ctx,
break;
}
}
rfc822_parser_deinit(&parser);
}

static bool block_is_at_eoh(const struct message_block *block)
Expand Down
8 changes: 7 additions & 1 deletion src/lib-mail/message-part-data.c
Expand Up @@ -308,6 +308,7 @@ parse_content_type(struct message_part_data *data,
parse_mime_parameters(&parser, pool,
&data->content_type_params,
&data->content_type_params_count);
rfc822_parser_deinit(&parser);
}

static void
Expand All @@ -326,6 +327,7 @@ parse_content_transfer_encoding(struct message_part_data *data,
data->content_transfer_encoding =
p_strdup(pool, str_c(str));
}
rfc822_parser_deinit(&parser);
}

static void
Expand All @@ -339,13 +341,16 @@ parse_content_disposition(struct message_part_data *data,
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
Expand Down Expand Up @@ -378,6 +383,7 @@ parse_content_language(struct message_part_data *data,
parser.data++;
rfc822_skip_lwsp(&parser);
}
rfc822_parser_deinit(&parser);

if (array_count(&langs) > 0) {
array_append_zero(&langs);
Expand Down
1 change: 1 addition & 0 deletions src/lib-mail/message-search.c
Expand Up @@ -61,6 +61,7 @@ static void parse_content_type(struct message_search_context *ctx,
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,
Expand Down
1 change: 1 addition & 0 deletions src/lib-mail/test-rfc2231-parser.c
Expand Up @@ -36,6 +36,7 @@ static void test_rfc2231_parser(void)
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();
}
Expand Down
2 changes: 2 additions & 0 deletions src/lib-mail/test-rfc822-parser.c
Expand Up @@ -31,6 +31,7 @@ static void test_rfc822_parse_quoted_string(void)
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();
Expand Down Expand Up @@ -60,6 +61,7 @@ static void test_rfc822_parse_content_param(void)
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();
Expand Down
1 change: 1 addition & 0 deletions src/plugins/fts/fts-build-mail.c
Expand Up @@ -56,6 +56,7 @@ static void fts_build_parse_content_type(struct fts_mail_build_context *ctx,
(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
Expand Down
5 changes: 4 additions & 1 deletion src/plugins/fts/fts-parser-script.c
Expand Up @@ -173,8 +173,10 @@ static void parse_content_disposition(const char *content_disposition,

/* 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;
Expand All @@ -191,6 +193,7 @@ static void parse_content_disposition(const char *content_disposition,
much about the filename actually, just about its extension */
*filename_r = filename2;
}
rfc822_parser_deinit(&parser);
}

static struct fts_parser *
Expand Down

0 comments on commit 9bc65e8

Please sign in to comment.