int len = 0;
multipart_info_t *m_info = NULL;
const char *type = pinfo->match_string;
- const char *parameters = pinfo->private_data;
+ char *parameters;
gint dummy;
- if ((type == NULL) || (parameters == NULL)) {
+ if ((type == NULL) || (pinfo->private_data == NULL)) {
/*
* We need both a content type AND parameters
* for multipart dissection.
}
/* Clean up the parameters */
- parameters = unfold_and_compact_mime_header(parameters, &dummy);
+ parameters = unfold_and_compact_mime_header(pinfo->private_data, &dummy);
/*
* Process the private data
/* Skip to next parameter */
p = strchr(p, ';');
if (p == NULL)
+ {
+ g_free(parameters);
return NULL;
+ }
p++; /* Skip semicolon */
while ((*p) && isspace((guchar)*p))
p++; /* Skip white space */
}
start = p + 9;
if (start[0] == 0) {
+ g_free(parameters);
return NULL;
}
/*
* No closing quote
*/
+ g_free(parameters);
return NULL;
}
} else {
m_info->type = type;
m_info->boundary = g_strndup(start, len);
m_info->boundary_length = len;
+ g_free(parameters);
return m_info;
}
while (line_len > 0)
{
gint colon_offset;
- char *header_str = tvb_get_string(tvb, offset, next_offset - offset);
+ char *hdr_str = tvb_get_string(tvb, offset, next_offset - offset);
+ char *header_str;
- header_str = unfold_and_compact_mime_header(header_str, &colon_offset);
+ header_str = unfold_and_compact_mime_header(hdr_str, &colon_offset);
+ g_free(hdr_str);
if (colon_offset <= 0) {
if (tree) {
proto_tree_add_text(subtree, tvb, offset, next_offset - offset,
}
}
}
+ g_free(header_str);
offset = next_offset;
line_len = tvb_find_line_end(tvb, offset, -1, &next_offset, FALSE);
}