summaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-parlay.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/packet-parlay.c')
-rw-r--r--epan/dissectors/packet-parlay.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/epan/dissectors/packet-parlay.c b/epan/dissectors/packet-parlay.c
index ecec46a..7d07fde 100644
--- a/epan/dissectors/packet-parlay.c
+++ b/epan/dissectors/packet-parlay.c
@@ -23,6 +23,7 @@
#include <string.h>
#include <epan/packet.h>
#include <epan/proto.h>
+#include <epan/proto_data.h>
#include "packet-giop.h"
#include <epan/expert.h>
@@ -2997,6 +2998,7 @@ static expert_field ei_parlay_unknown_giop_msg = EI_INIT;
static expert_field ei_parlay_unknown_exception = EI_INIT;
static expert_field ei_parlay_unknown_reply_status = EI_INIT;
+#define MAX_RECURSION_DEPTH 50 // Arbitrarily chosen.
static proto_tree *start_dissecting(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ptree, int *offset);
@@ -53623,6 +53625,7 @@ decode_org_csapi_cs_TpAppInformation_un(tvbuff_t *tvb _U_, packet_info *pinfo _U
}
/* Union = IDL:org/csapi/policy/TpPolicyType:1.0 */
+// NOLINTBEGIN(misc-no-recursion)
static void
decode_org_csapi_policy_TpPolicyType_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, const gchar *operation _U_, gboolean stream_is_big_endian _U_)
{
@@ -53633,6 +53636,11 @@ decode_org_csapi_policy_TpPolicyType_un(tvbuff_t *tvb _U_, packet_info *pinfo _U
gint32 disc_s_TpPolicyType;
/* Operation specific Variable declarations End */
+ // Cycle: this -> decode_org_csapi_policy_TpPolicyType_TpPolicyListType_st -> this
+ unsigned recursion_depth = p_get_proto_depth(pinfo, proto_parlay);
+ DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH);
+ p_set_proto_depth(pinfo, proto_parlay, recursion_depth + 1);
+
/*
* IDL Union Start - IDL:org/csapi/policy/TpPolicyType:1.0
*/
@@ -53651,6 +53659,7 @@ decode_org_csapi_policy_TpPolicyType_un(tvbuff_t *tvb _U_, packet_info *pinfo _U
u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
proto_tree_add_uint(tree, hf_org_csapi_policy_TpPolicyType_SimpleType, tvb, *offset-4, 4, u_octet4);
+ p_set_proto_depth(pinfo, proto_parlay, recursion_depth);
return; /* End Compare for this discriminant type */
}
@@ -53659,6 +53668,7 @@ decode_org_csapi_policy_TpPolicyType_un(tvbuff_t *tvb _U_, packet_info *pinfo _U
/* Begin struct "org_csapi_policy_TpPolicyType_TpPolicyRecordType" */
decode_org_csapi_policy_TpPolicyType_TpPolicyRecordType_st(tvb, pinfo, tree, item, offset, header, operation, stream_is_big_endian);
/* End struct "org_csapi_policy_TpPolicyType_TpPolicyRecordType" */
+ p_set_proto_depth(pinfo, proto_parlay, recursion_depth);
return; /* End Compare for this discriminant type */
}
@@ -53667,6 +53677,7 @@ decode_org_csapi_policy_TpPolicyType_un(tvbuff_t *tvb _U_, packet_info *pinfo _U
/* Begin struct "org_csapi_policy_TpPolicyType_TpPolicyListType" */
decode_org_csapi_policy_TpPolicyType_TpPolicyListType_st(tvb, pinfo, tree, item, offset, header, operation, stream_is_big_endian);
/* End struct "org_csapi_policy_TpPolicyType_TpPolicyListType" */
+ p_set_proto_depth(pinfo, proto_parlay, recursion_depth);
return; /* End Compare for this discriminant type */
}
@@ -53674,6 +53685,7 @@ decode_org_csapi_policy_TpPolicyType_un(tvbuff_t *tvb _U_, packet_info *pinfo _U
giop_add_CDR_string(tree, tvb, offset, stream_is_big_endian, boundary, hf_org_csapi_policy_TpPolicyType_StructuredType);
+ p_set_proto_depth(pinfo, proto_parlay, recursion_depth);
return; /* End Compare for this discriminant type */
}
@@ -53681,10 +53693,13 @@ decode_org_csapi_policy_TpPolicyType_un(tvbuff_t *tvb _U_, packet_info *pinfo _U
giop_add_CDR_string(tree, tvb, offset, stream_is_big_endian, boundary, hf_org_csapi_policy_TpPolicyType_XMLString);
+ p_set_proto_depth(pinfo, proto_parlay, recursion_depth);
return; /* End Compare for this discriminant type */
}
+ p_set_proto_depth(pinfo, proto_parlay, recursion_depth);
}
+// NOLINTEND(misc-no-recursion)
/* Union = IDL:org/csapi/pam/TpPAMContextData:1.0 */
static void