diff options
Diffstat (limited to '')
-rw-r--r-- | epan/dissectors/packet-nhrp.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/epan/dissectors/packet-nhrp.c b/epan/dissectors/packet-nhrp.c index 44edaebb..33c32b0c 100644 --- a/epan/dissectors/packet-nhrp.c +++ b/epan/dissectors/packet-nhrp.c @@ -562,6 +562,7 @@ static void dissect_cie_list(tvbuff_t *tvb, } } +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_nhrp_mand(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, @@ -757,6 +758,7 @@ static void dissect_nhrp_mand(tvbuff_t *tvb, save_in_error_pkt = pinfo->flags.in_error_pkt; pinfo->flags.in_error_pkt = TRUE; sub_tvb = tvb_new_subset_remaining(tvb, offset); + // We recurse here, but we'll run out of packet before we run out of stack. _dissect_nhrp(sub_tvb, pinfo, ind_tree, TRUE, FALSE); pinfo->flags.in_error_pkt = save_in_error_pkt; break; @@ -994,6 +996,7 @@ static int dissect_nhrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi return tvb_captured_length(tvb); } +// NOLINTNEXTLINE(misc-no-recursion) static void _dissect_nhrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean nested, gboolean codeinfo) { @@ -1034,6 +1037,7 @@ static void _dissect_nhrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, } if (mandLen) { tvbuff_t *mand_tvb = tvb_new_subset_length(tvb, offset, mandLen); + // We recurse here, but we'll run out of packet before we run out of stack. dissect_nhrp_mand(mand_tvb, pinfo, nhrp_tree, oui_info, &hdr, &srcLen, codeinfo); offset += mandLen; |