diff options
Diffstat (limited to 'epan/dissectors/packet-pim.c')
-rw-r--r-- | epan/dissectors/packet-pim.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/epan/dissectors/packet-pim.c b/epan/dissectors/packet-pim.c index a492b291d8..9c289a5fe2 100644 --- a/epan/dissectors/packet-pim.c +++ b/epan/dissectors/packet-pim.c @@ -374,7 +374,8 @@ dissect_pimv1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U pim_length = length; } - if (!pinfo->fragmented && length >= pim_length) { + if (!pinfo->fragmented && length >= pim_length && + tvb_captured_length(tvb) >= pim_length) { /* * The packet isn't part of a fragmented datagram and isn't * truncated, so we can checksum it. @@ -864,7 +865,8 @@ dissect_pim(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { */ pim_length = length; } - if (!pinfo->fragmented && length >= pim_length) { + if (!pinfo->fragmented && length >= pim_length && + tvb_captured_length(tvb) >= pim_length) { /* * The packet isn't part of a fragmented datagram and isn't * truncated, so we can checksum it. |