diff options
author | guy <guy@f5534014-38df-0310-8fa8-9805f1628bb7> | 2005-01-05 10:13:24 +0000 |
---|---|---|
committer | guy <guy@f5534014-38df-0310-8fa8-9805f1628bb7> | 2005-01-05 10:13:24 +0000 |
commit | f36491bca1903427f1ed62426af4b2255b75f9ce (patch) | |
tree | 8507b07ee28a192cb1756c28695ba548c6defa9f /epan/dissectors/packet-image-jfif.c | |
parent | c33d0cf2063a38d1a4f44f6225242984c1533485 (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.c | 9 |
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)"); |