diff options
author | Peter Wu <peter@lekensteyn.nl> | 2017-02-14 10:05:01 +0100 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2017-02-18 14:21:27 +0000 |
commit | fcc9cf2e454be68348f19cb4416702a208da5fb3 (patch) | |
tree | 8645dca7483f3e2fce5281053a001ada083adb02 /epan/proto.c | |
parent | 64d0133e8811102f153253e42385d992da072911 (diff) |
proto: ensure that length is set for proto_tree_add_item_new_ret_length
A user reported that the TNS dissector would show "Malformed Packet" in
the Info column in Qt. The actual packet details and Expert Info dialog
however had no trace of the issue.
It turns out that proto_tree_add_item_new_ret_length did not correctly
set the length. Test case (based on pcap from SampleCaptures wiki):
tshark -r TNS_Oracle1.pcap -w 19.pcap -Y frame.number==19
tshark -r 19.pcap -Y tcp
Change-Id: I82cb1ccbc7c3b33d2bcdb22f89a1754c1a4575e7
Fixes: v2.1.0rc0-1394-gc67c6e8f30 ("Add routines to add an item and return the item's real length.")
Reviewed-on: https://code.wireshark.org/review/20098
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Jörg Mayer <jmayer@loplof.de>
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/proto.c')
-rw-r--r-- | epan/proto.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/epan/proto.c b/epan/proto.c index 2e6cea999b..b3a5c0bc32 100644 --- a/epan/proto.c +++ b/epan/proto.c @@ -2633,7 +2633,14 @@ proto_tree_add_item_new_ret_length(proto_tree *tree, header_field_info *hfinfo, return NULL; } - TRY_TO_FAKE_THIS_ITEM(tree, hfinfo->id, hfinfo); + TRY_TO_FAKE_THIS_ITEM_OR_FREE(tree, hfinfo->id, hfinfo, { + /* + * Even if the tree item is not referenced (and thus faked), + * the caller must still be informed of the actual length. + */ + *lenretval = get_full_length(hfinfo, tvb, start, length, + item_length, encoding); + }); new_fi = new_field_info(tree, hfinfo, tvb, start, item_length); |