procmime.c procmime_parse_multipart() fix leak
- additional_header was not freed in every code path. - Also no need to allocate it at the beginning
This commit is contained in:
parent
51feaad261
commit
816211e894
|
@ -1746,7 +1746,7 @@ static void procmime_parse_multipart(MimeInfo *mimeinfo, gboolean short_scan)
|
|||
int result = 0;
|
||||
gboolean start_found = FALSE;
|
||||
gboolean end_found = FALSE;
|
||||
GPtrArray *additional_headers = g_ptr_array_new();
|
||||
GPtrArray *additional_headers = NULL;
|
||||
|
||||
boundary = g_hash_table_lookup(mimeinfo->typeparameters, "boundary");
|
||||
if (!boundary)
|
||||
|
@ -1784,9 +1784,9 @@ static void procmime_parse_multipart(MimeInfo *mimeinfo, gboolean short_scan)
|
|||
hentry[4].body, hentry[5].body,
|
||||
mimeinfo->data.filename, lastoffset,
|
||||
len);
|
||||
if (g_hash_table_lookup(childinfo->typeparameters, "protected-headers")) {
|
||||
if (additional_headers && g_hash_table_lookup(childinfo->typeparameters, "protected-headers")) {
|
||||
for (int i = 0; i < additional_headers->len; i ++ ) {
|
||||
Header *hdr = g_ptr_array_index(additional_headers,i);
|
||||
Header *hdr = g_ptr_array_steal_index(additional_headers,i);
|
||||
procmime_mimeinfo_add_extra_header(childinfo, hdr);
|
||||
}
|
||||
g_ptr_array_free(additional_headers, TRUE);
|
||||
|
@ -1812,12 +1812,18 @@ static void procmime_parse_multipart(MimeInfo *mimeinfo, gboolean short_scan)
|
|||
g_free(curheader->body);
|
||||
curheader->body = NULL;
|
||||
}
|
||||
additional_headers = g_ptr_array_new();
|
||||
if(additional_headers)
|
||||
g_ptr_array_free(additional_headers, TRUE);
|
||||
additional_headers = g_ptr_array_new_with_free_func(procheader_header_free);
|
||||
procheader_get_all_header_fields(fp, hentry, additional_headers);
|
||||
FILL_HEADERS();
|
||||
lastoffset = ftell(fp);
|
||||
}
|
||||
}
|
||||
|
||||
if(additional_headers)
|
||||
g_ptr_array_free(additional_headers, TRUE);
|
||||
|
||||
if (start_found && !end_found && lastoffset != -1) {
|
||||
gint len = (ftell(fp) - strlen(buf)) - lastoffset - 1;
|
||||
|
||||
|
|
Loading…
Reference in New Issue