summaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-nhrp.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/packet-nhrp.c')
-rw-r--r--epan/dissectors/packet-nhrp.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/epan/dissectors/packet-nhrp.c b/epan/dissectors/packet-nhrp.c
index 44edaeb..33c32b0 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;