aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-image-jfif.c
diff options
context:
space:
mode:
authorguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>2005-01-05 10:13:24 +0000
committerguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>2005-01-05 10:13:24 +0000
commitf36491bca1903427f1ed62426af4b2255b75f9ce (patch)
tree8507b07ee28a192cb1756c28695ba548c6defa9f /epan/dissectors/packet-image-jfif.c
parentc33d0cf2063a38d1a4f44f6225242984c1533485 (diff)
Free the image type string as soon as we're done with it, so that we
don't leak it (even if we throw an exception processing the image). git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@12955 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-image-jfif.c')
-rw-r--r--epan/dissectors/packet-image-jfif.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/epan/dissectors/packet-image-jfif.c b/epan/dissectors/packet-image-jfif.c
index 896cb03b7c..2425be08b9 100644
--- a/epan/dissectors/packet-image-jfif.c
+++ b/epan/dissectors/packet-image-jfif.c
@@ -517,6 +517,7 @@ process_app0_segment(proto_tree *tree, tvbuff_t *tvb, guint32 len,
str = tvb_get_stringz(tvb, 4, &str_size);
ti = proto_tree_add_item(subtree, hf_identifier, tvb, 4, str_size, FALSE);
if (strcmp(str, "JFIF") == 0) {
+ g_free(str);
/* Version */
ti = proto_tree_add_none_format(subtree, hf_version,
tvb, 9, 2, "Version: %u.%u",
@@ -554,6 +555,7 @@ process_app0_segment(proto_tree *tree, tvbuff_t *tvb, guint32 len,
}
}
} else if (strcmp(str, "JFXX") == 0) {
+ g_free(str);
proto_tree_add_item(subtree, hf_extension_code,
tvb, 9, 1, FALSE);
{
@@ -570,13 +572,13 @@ process_app0_segment(proto_tree *tree, tvbuff_t *tvb, guint32 len,
}
}
} else { /* Unknown */
+ g_free(str);
proto_item_append_text(ti, " (unknown identifier)");
offset = 4 + str_size;
proto_tree_add_text(subtree, tvb, offset, -1,
"Remaining segment data (%u bytes)", len - 2 - str_size);
}
-
return;
}
@@ -621,6 +623,8 @@ process_app1_segment(proto_tree *tree, tvbuff_t *tvb, guint32 len,
guint32 val_32;
guint16 num_fields;
+ g_free(str);
+
offset++; /* Skip a byte supposed to be 0x00 */
tiff_start = offset;
@@ -734,6 +738,7 @@ process_app1_segment(proto_tree *tree, tvbuff_t *tvb, guint32 len,
break;
}
} else {
+ g_free(str);
proto_tree_add_text(subtree, tvb, offset, -1,
"Remaining segment data (%u bytes)", len - 2 - str_size);
proto_item_append_text(ti, " (Unknown identifier)");
@@ -768,8 +773,10 @@ process_app2_segment(proto_tree *tree, tvbuff_t *tvb, guint32 len,
str = tvb_get_stringz(tvb, 4, &str_size);
ti = proto_tree_add_item(subtree, hf_identifier, tvb, 4, str_size, FALSE);
if (strcmp(str, "FPXR") == 0) {
+ g_free(str);
proto_tree_add_text(tree, tvb, 0, -1, "Exif FlashPix APP2 application marker");
} else {
+ g_free(str);
proto_tree_add_text(subtree, tvb, 4 + str_size, -1,
"Remaining segment data (%u bytes)", len - 2 - str_size);
proto_item_append_text(ti, " (Unknown identifier)");