diff options
author | Martin Mathieson <martin.r.mathieson@googlemail.com> | 2015-06-23 14:01:22 -0700 |
---|---|---|
committer | Martin Mathieson <martin.r.mathieson@googlemail.com> | 2015-06-23 21:32:25 +0000 |
commit | d4f6480253cf303f70c3d831098adf7582403b8f (patch) | |
tree | b7490788f98ff6591fd47650e1e38a5821a37777 /epan/dissectors/packet-isakmp.c | |
parent | e53337accf76cddd4e0c3aaed3fb03d128c65f69 (diff) |
ISAKMP: fix Cisco fragmentation support.
Last flag wasn't mapping to 'more fragments' properly, and reassembly
should only be attempted on the last frame.
Bug: 7940
Change-Id: I565f2b72b6eb68dc32e0f57a43a098a8f203a800
Reviewed-on: https://code.wireshark.org/review/9073
Petri-Dish: Martin Mathieson <martin.r.mathieson@googlemail.com>
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Reviewed-by: Martin Mathieson <martin.r.mathieson@googlemail.com>
Diffstat (limited to 'epan/dissectors/packet-isakmp.c')
-rw-r--r-- | epan/dissectors/packet-isakmp.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/epan/dissectors/packet-isakmp.c b/epan/dissectors/packet-isakmp.c index 182fe5a1d4..1127b060a7 100644 --- a/epan/dissectors/packet-isakmp.c +++ b/epan/dissectors/packet-isakmp.c @@ -3931,18 +3931,18 @@ dissect_cisco_fragmentation(tvbuff_t *tvb, int offset, int length, proto_tree *t NULL, seq-1, /* fragment sequence number, starting from 0 */ tvb_reported_length_remaining(tvb, offset), /* fragment length - to the end */ - last); /* More fragments? */ + !last); /* More fragments? */ defrag_isakmp_tvb = process_reassembled_data(tvb, offset, pinfo, "Reassembled ISAKMP", frag_msg, &isakmp_frag_items, /* groups and items, using same as Cisco */ NULL, ptree); - if (defrag_isakmp_tvb) { /* take it all */ + if (last && defrag_isakmp_tvb) { /* take it all */ dissect_isakmp(defrag_isakmp_tvb, pinfo, ptree, NULL); } col_append_fstr(pinfo->cinfo, COL_INFO, " (%sMessage fragment %u%s)", - (frag_msg ? "Reassembled + " : ""), + (last && frag_msg ? "Reassembled + " : ""), seq, (last ? " - last" : "")); pinfo->fragmented = save_fragmented; } |