epan/dissectors/packet-dcerpc-lsa.c regen ndr_generic_array
authorStefan Metzmacher <metze@samba.org>
Mon, 21 Mar 2022 23:24:38 +0000 (00:24 +0100)
committerStefan Metzmacher <metze@samba.org>
Fri, 17 May 2024 11:13:13 +0000 (13:13 +0200)
epan/dissectors/packet-dcerpc-lsa.c

index 75971677a6c00f6afc3a08d31bdc2329b413abdb..b4bde217a5c3fae3bca0ab56c6bee2ae5ef0c97f 100644 (file)
@@ -982,8 +982,9 @@ static int lsarpc_dissect_element_lsa_LUIDAttribute_luid(tvbuff_t *tvb _U_, int
 static int lsarpc_dissect_element_lsa_LUIDAttribute_attribute(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
 static int lsarpc_dissect_element_lsa_PrivilegeSet_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
 static int lsarpc_dissect_element_lsa_PrivilegeSet_unknown(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
-static int lsarpc_dissect_element_lsa_PrivilegeSet_set(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int lsarpc_dissect_element_lsa_PrivilegeSet_set(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, struct ndr_generic_array *nga);
 static int lsarpc_dissect_element_lsa_PrivilegeSet_set_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int lsarpc_dissect_conformant_lsa_PrivilegeSet_set(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, struct ndr_generic_array *nga);
 static int lsarpc_dissect_element_lsa_DATA_BUF_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
 static int lsarpc_dissect_element_lsa_DATA_BUF_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
 static int lsarpc_dissect_element_lsa_DATA_BUF_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
@@ -2229,7 +2230,11 @@ lsarpc_dissect_element_lsa_Strings_names(tvbuff_t *tvb _U_, int offset _U_, pack
 static int
 lsarpc_dissect_element_lsa_Strings_names_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_Strings_names__);
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_Strings_names__);
 
        return offset;
 }
@@ -2307,7 +2312,13 @@ lsarpc_dissect_element_lsa_AsciiString_string(tvbuff_t *tvb _U_, int offset _U_,
 static int
 lsarpc_dissect_element_lsa_AsciiString_string_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_AsciiString_string__);
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_AsciiString_string__);
 
        return offset;
 }
@@ -2387,7 +2398,13 @@ lsarpc_dissect_element_lsa_AsciiStringLarge_string(tvbuff_t *tvb _U_, int offset
 static int
 lsarpc_dissect_element_lsa_AsciiStringLarge_string_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_AsciiStringLarge_string__);
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_AsciiStringLarge_string__);
 
        return offset;
 }
@@ -2467,7 +2484,13 @@ lsarpc_dissect_element_lsa_BinaryString_array(tvbuff_t *tvb _U_, int offset _U_,
 static int
 lsarpc_dissect_element_lsa_BinaryString_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_BinaryString_array__);
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_BinaryString_array__);
 
        return offset;
 }
@@ -2644,7 +2667,11 @@ lsarpc_dissect_element_lsa_PrivArray_privs(tvbuff_t *tvb _U_, int offset _U_, pa
 static int
 lsarpc_dissect_element_lsa_PrivArray_privs_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_PrivArray_privs__);
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_PrivArray_privs__);
 
        return offset;
 }
@@ -2830,9 +2857,14 @@ lsarpc_dissect_element_lsa_ObjectAttribute_object_name(tvbuff_t *tvb _U_, int of
 static int
 lsarpc_dissect_element_lsa_ObjectAttribute_object_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
+       char *data = NULL;
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_lsarpc_lsa_ObjectAttribute_object_name, FALSE, &data);
+       offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_lsarpc_lsa_ObjectAttribute_object_name, FALSE, &nga, &data);
        proto_item_append_text(tree, ": %s", data);
 
        return offset;
@@ -3165,7 +3197,11 @@ lsarpc_dissect_element_lsa_AuditEventsInfo_settings(tvbuff_t *tvb _U_, int offse
 static int
 lsarpc_dissect_element_lsa_AuditEventsInfo_settings_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_AuditEventsInfo_settings__);
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_AuditEventsInfo_settings__);
 
        return offset;
 }
@@ -4080,7 +4116,11 @@ lsarpc_dissect_element_lsa_SidArray_sids(tvbuff_t *tvb _U_, int offset _U_, pack
 static int
 lsarpc_dissect_element_lsa_SidArray_sids_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_SidArray_sids__);
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_SidArray_sids__);
 
        return offset;
 }
@@ -4149,7 +4189,11 @@ lsarpc_dissect_element_lsa_DomainList_domains(tvbuff_t *tvb _U_, int offset _U_,
 static int
 lsarpc_dissect_element_lsa_DomainList_domains_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_DomainList_domains__);
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_DomainList_domains__);
 
        return offset;
 }
@@ -4311,7 +4355,11 @@ lsarpc_dissect_element_lsa_TransSidArray_sids(tvbuff_t *tvb _U_, int offset _U_,
 static int
 lsarpc_dissect_element_lsa_TransSidArray_sids_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_TransSidArray_sids__);
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_TransSidArray_sids__);
 
        return offset;
 }
@@ -4381,7 +4429,11 @@ lsarpc_dissect_element_lsa_RefDomainList_domains(tvbuff_t *tvb _U_, int offset _
 static int
 lsarpc_dissect_element_lsa_RefDomainList_domains_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_RefDomainList_domains__);
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_RefDomainList_domains__);
 
        return offset;
 }
@@ -4549,7 +4601,11 @@ lsarpc_dissect_element_lsa_TransNameArray_names(tvbuff_t *tvb _U_, int offset _U
 static int
 lsarpc_dissect_element_lsa_TransNameArray_names_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_TransNameArray_names__);
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_TransNameArray_names__);
 
        return offset;
 }
@@ -4670,9 +4726,10 @@ lsarpc_dissect_element_lsa_PrivilegeSet_unknown(tvbuff_t *tvb _U_, int offset _U
 }
 
 static int
-lsarpc_dissect_element_lsa_PrivilegeSet_set(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+lsarpc_dissect_element_lsa_PrivilegeSet_set(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, struct ndr_generic_array *nga)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_PrivilegeSet_set_);
+
+       offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, nga, lsarpc_dissect_element_lsa_PrivilegeSet_set_);
 
        return offset;
 }
@@ -4685,13 +4742,24 @@ lsarpc_dissect_element_lsa_PrivilegeSet_set_(tvbuff_t *tvb _U_, int offset _U_,
        return offset;
 }
 
+static int
+lsarpc_dissect_conformant_lsa_PrivilegeSet_set(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, struct ndr_generic_array *nga)
+{
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, nga);
+
+       return offset;
+}
+
 int
 lsarpc_dissect_struct_lsa_PrivilegeSet(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
+       struct ndr_generic_array nga_set = { .is_conformant = FALSE, };
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
+       offset = lsarpc_dissect_conformant_lsa_PrivilegeSet_set(tvb, offset, pinfo, parent_tree, di, drep, &nga_set);
+
        ALIGN_TO_4_BYTES;
 
        old_offset = offset;
@@ -4705,16 +4773,12 @@ lsarpc_dissect_struct_lsa_PrivilegeSet(tvbuff_t *tvb _U_, int offset _U_, packet
 
        offset = lsarpc_dissect_element_lsa_PrivilegeSet_unknown(tvb, offset, pinfo, tree, di, drep);
 
-       offset = lsarpc_dissect_element_lsa_PrivilegeSet_set(tvb, offset, pinfo, tree, di, drep);
+       offset = lsarpc_dissect_element_lsa_PrivilegeSet_set(tvb, offset, pinfo, tree, di, drep, &nga_set);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_4_BYTES;
-       }
-
        return offset;
 }
 
@@ -4752,7 +4816,13 @@ lsarpc_dissect_element_lsa_DATA_BUF_data(tvbuff_t *tvb _U_, int offset _U_, pack
 static int
 lsarpc_dissect_element_lsa_DATA_BUF_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_DATA_BUF_data__);
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_DATA_BUF_data__);
 
        return offset;
 }
@@ -4823,7 +4893,11 @@ lsarpc_dissect_element_lsa_DATA_BUF2_data(tvbuff_t *tvb _U_, int offset _U_, pac
 static int
 lsarpc_dissect_element_lsa_DATA_BUF2_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_DATA_BUF2_data__);
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_DATA_BUF2_data__);
 
        return offset;
 }
@@ -5075,7 +5149,11 @@ lsarpc_dissect_element_lsa_TrustDomainInfoControllers_netbios_names(tvbuff_t *tv
 static int
 lsarpc_dissect_element_lsa_TrustDomainInfoControllers_netbios_names_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_TrustDomainInfoControllers_netbios_names__);
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_TrustDomainInfoControllers_netbios_names__);
 
        return offset;
 }
@@ -5963,7 +6041,11 @@ lsarpc_dissect_element_lsa_TrustDomainInfoInfoEx2Internal_forest_trust_data(tvbu
 static int
 lsarpc_dissect_element_lsa_TrustDomainInfoInfoEx2Internal_forest_trust_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_TrustDomainInfoInfoEx2Internal_forest_trust_data__);
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_TrustDomainInfoInfoEx2Internal_forest_trust_data__);
 
        return offset;
 }
@@ -6403,9 +6485,14 @@ lsarpc_dissect_element_lsa_RightAttribute_name(tvbuff_t *tvb _U_, int offset _U_
 static int
 lsarpc_dissect_element_lsa_RightAttribute_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
+       char *data = NULL;
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_lsarpc_lsa_RightAttribute_name, FALSE, &data);
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_lsarpc_lsa_RightAttribute_name, FALSE, &nga, &data);
        proto_item_append_text(tree, ": %s", data);
 
        return offset;
@@ -6465,7 +6552,11 @@ lsarpc_dissect_element_lsa_RightSet_names(tvbuff_t *tvb _U_, int offset _U_, pac
 static int
 lsarpc_dissect_element_lsa_RightSet_names_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_RightSet_names__);
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_RightSet_names__);
 
        return offset;
 }
@@ -6534,7 +6625,11 @@ lsarpc_dissect_element_lsa_DomainListEx_domains(tvbuff_t *tvb _U_, int offset _U
 static int
 lsarpc_dissect_element_lsa_DomainListEx_domains_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_DomainListEx_domains__);
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_DomainListEx_domains__);
 
        return offset;
 }
@@ -6989,7 +7084,11 @@ lsarpc_dissect_element_lsa_TransNameArray2_names(tvbuff_t *tvb _U_, int offset _
 static int
 lsarpc_dissect_element_lsa_TransNameArray2_names_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_TransNameArray2_names__);
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_TransNameArray2_names__);
 
        return offset;
 }
@@ -7173,7 +7272,11 @@ lsarpc_dissect_element_lsa_TransSidArray2_sids(tvbuff_t *tvb _U_, int offset _U_
 static int
 lsarpc_dissect_element_lsa_TransSidArray2_sids_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_TransSidArray2_sids__);
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_TransSidArray2_sids__);
 
        return offset;
 }
@@ -7325,7 +7428,11 @@ lsarpc_dissect_element_lsa_TransSidArray3_sids(tvbuff_t *tvb _U_, int offset _U_
 static int
 lsarpc_dissect_element_lsa_TransSidArray3_sids_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_TransSidArray3_sids__);
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_TransSidArray3_sids__);
 
        return offset;
 }
@@ -7461,7 +7568,11 @@ lsarpc_dissect_element_lsa_ForestTrustBinaryData_data(tvbuff_t *tvb _U_, int off
 static int
 lsarpc_dissect_element_lsa_ForestTrustBinaryData_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_ForestTrustBinaryData_data__);
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_ForestTrustBinaryData_data__);
 
        return offset;
 }
@@ -7757,7 +7868,11 @@ lsarpc_dissect_element_lsa_ForestTrustInformation_entries(tvbuff_t *tvb _U_, int
 static int
 lsarpc_dissect_element_lsa_ForestTrustInformation_entries_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_ForestTrustInformation_entries__);
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_ForestTrustInformation_entries__);
 
        return offset;
 }
@@ -7930,7 +8045,11 @@ lsarpc_dissect_element_lsa_ForestTrustCollisionInfo_entries(tvbuff_t *tvb _U_, i
 static int
 lsarpc_dissect_element_lsa_ForestTrustCollisionInfo_entries_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_ForestTrustCollisionInfo_entries__);
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_ForestTrustCollisionInfo_entries__);
 
        return offset;
 }
@@ -8300,7 +8419,11 @@ lsarpc_dissect_element_lsa_ForestTrustInformation2_entries(tvbuff_t *tvb _U_, in
 static int
 lsarpc_dissect_element_lsa_ForestTrustInformation2_entries_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_ForestTrustInformation2_entries__);
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, lsarpc_dissect_element_lsa_ForestTrustInformation2_entries__);
 
        return offset;
 }
@@ -11875,9 +11998,14 @@ lsarpc_dissect_element_lsa_OpenPolicy2_system_name(tvbuff_t *tvb _U_, int offset
 static int
 lsarpc_dissect_element_lsa_OpenPolicy2_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
+       char *data = NULL;
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_lsarpc_lsa_OpenPolicy2_system_name, FALSE, &data);
+       offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_lsarpc_lsa_OpenPolicy2_system_name, FALSE, &nga, &data);
        proto_item_append_text(tree, ": %s", data);
 
        return offset;
@@ -11971,9 +12099,14 @@ lsarpc_dissect_element_lsa_GetUserName_system_name(tvbuff_t *tvb _U_, int offset
 static int
 lsarpc_dissect_element_lsa_GetUserName_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
+       char *data = NULL;
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_lsarpc_lsa_GetUserName_system_name, FALSE, &data);
+       offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_lsarpc_lsa_GetUserName_system_name, FALSE, &nga, &data);
        proto_item_append_text(tree, ": %s", data);
 
        return offset;
@@ -15461,9 +15594,14 @@ lsarpc_dissect_element_lsa_OpenPolicy3_system_name(tvbuff_t *tvb _U_, int offset
 static int
 lsarpc_dissect_element_lsa_OpenPolicy3_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
+       char *data = NULL;
+       struct ndr_generic_array nga = { .is_conformant = FALSE, };
+
+       offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
+
+       offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_lsarpc_lsa_OpenPolicy3_system_name, FALSE, &data);
+       offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_lsarpc_lsa_OpenPolicy3_system_name, FALSE, &nga, &data);
        proto_item_append_text(tree, ": %s", data);
 
        return offset;