From e10ac68038b2553150cd1c924580c58308cb1a22 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Fri, 6 Apr 2012 14:58:03 +1000 Subject: [PATCH 3/3] gen_ndr --- bin/default/librpc/gen_ndr/ndr_atsvc.c | 2 + bin/default/librpc/gen_ndr/ndr_auth.c | 4 + bin/default/librpc/gen_ndr/ndr_backupkey.c | 4 + bin/default/librpc/gen_ndr/ndr_browser.c | 4 + bin/default/librpc/gen_ndr/ndr_dcom.c | 24 ++ bin/default/librpc/gen_ndr/ndr_dfs.c | 22 ++ bin/default/librpc/gen_ndr/ndr_dnsp.c | 2 + bin/default/librpc/gen_ndr/ndr_dnsserver.c | 16 + bin/default/librpc/gen_ndr/ndr_drsblobs.c | 8 + bin/default/librpc/gen_ndr/ndr_drsuapi.c | 86 ++++++ bin/default/librpc/gen_ndr/ndr_echo.c | 10 + bin/default/librpc/gen_ndr/ndr_efs.c | 6 + bin/default/librpc/gen_ndr/ndr_epmapper.c | 12 + bin/default/librpc/gen_ndr/ndr_eventlog.c | 12 + bin/default/librpc/gen_ndr/ndr_eventlog6.c | 52 ++++ bin/default/librpc/gen_ndr/ndr_frstrans.c | 18 ++ bin/default/librpc/gen_ndr/ndr_ioctl.c | 312 ++++++++++++++++++++ bin/default/librpc/gen_ndr/ndr_ioctl.h | 18 ++ bin/default/librpc/gen_ndr/ndr_krb5pac.c | 2 + bin/default/librpc/gen_ndr/ndr_lsa.c | 74 +++++ bin/default/librpc/gen_ndr/ndr_mgmt.c | 6 + bin/default/librpc/gen_ndr/ndr_netlogon.c | 64 ++++ bin/default/librpc/gen_ndr/ndr_ntsvcs.c | 8 + bin/default/librpc/gen_ndr/ndr_orpc.c | 4 + bin/default/librpc/gen_ndr/ndr_oxidresolver.c | 8 + bin/default/librpc/gen_ndr/ndr_printcap.c | 2 + bin/default/librpc/gen_ndr/ndr_remact.c | 8 + bin/default/librpc/gen_ndr/ndr_samr.c | 36 +++ bin/default/librpc/gen_ndr/ndr_security.c | 4 + bin/default/librpc/gen_ndr/ndr_spoolss.c | 42 +++ bin/default/librpc/gen_ndr/ndr_srvsvc.c | 68 +++++ bin/default/librpc/gen_ndr/ndr_svcctl.c | 24 ++ bin/default/librpc/gen_ndr/ndr_unixinfo.c | 4 + bin/default/librpc/gen_ndr/ndr_winreg.c | 62 ++++ bin/default/librpc/gen_ndr/ndr_wkssvc.c | 20 ++ bin/default/librpc/gen_ndr/ndr_wmi.c | 16 + bin/default/librpc/gen_ndr/ndr_xattr.c | 4 + .../source3/librpc/gen_ndr/ndr_open_files.c | 28 ++ bin/default/source3/librpc/gen_ndr/ndr_wbint.c | 10 + bin/default/source4/librpc/gen_ndr/ndr_irpc.c | 4 + bin/default/source4/librpc/gen_ndr/ndr_winbind.c | 4 + bin/default/source4/librpc/gen_ndr/ndr_winsif.c | 14 + 42 files changed, 1128 insertions(+), 0 deletions(-) diff --git a/bin/default/librpc/gen_ndr/ndr_atsvc.c b/bin/default/librpc/gen_ndr/ndr_atsvc.c index 177f8f8..54c6613 100644 --- a/bin/default/librpc/gen_ndr/ndr_atsvc.c +++ b/bin/default/librpc/gen_ndr/ndr_atsvc.c @@ -337,6 +337,8 @@ static enum ndr_err_code ndr_pull_atsvc_enum_ctr(struct ndr_pull *ndr, int ndr_f } if (r->first_entry) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->first_entry, r->entries_read)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->entries_read)); } } return NDR_ERR_SUCCESS; diff --git a/bin/default/librpc/gen_ndr/ndr_auth.c b/bin/default/librpc/gen_ndr/ndr_auth.c index 56fe2aa..ae9b7e1 100644 --- a/bin/default/librpc/gen_ndr/ndr_auth.c +++ b/bin/default/librpc/gen_ndr/ndr_auth.c @@ -429,6 +429,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_auth_user_info_torture(struct ndr_pull *ndr, NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dc_sids_0, 0); if (r->dc_sids) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->dc_sids, r->num_dc_sids)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_dc_sids)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); } @@ -616,6 +618,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_auth_user_info_dc(struct ndr_pull *ndr, int NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->lm_session_key)); if (r->sids) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sids, r->num_sids)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_sids)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); } diff --git a/bin/default/librpc/gen_ndr/ndr_backupkey.c b/bin/default/librpc/gen_ndr/ndr_backupkey.c index 40a4510..46a5d98 100644 --- a/bin/default/librpc/gen_ndr/ndr_backupkey.c +++ b/bin/default/librpc/gen_ndr/ndr_backupkey.c @@ -711,6 +711,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_bkrp_BackupKey(struct ndr_pull *ndr, int fla ZERO_STRUCTP(r->out.data_out_len); if (r->in.data_in) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.data_in, r->in.data_in_len)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.data_in_len)); } } if (flags & NDR_OUT) { @@ -745,6 +747,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_bkrp_BackupKey(struct ndr_pull *ndr, int fla NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (*r->out.data_out) { NDR_CHECK(ndr_check_array_size(ndr, (void*)r->out.data_out, *r->out.data_out_len)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->out.data_out_len)); } } return NDR_ERR_SUCCESS; diff --git a/bin/default/librpc/gen_ndr/ndr_browser.c b/bin/default/librpc/gen_ndr/ndr_browser.c index 49ff2a3..55ec371 100644 --- a/bin/default/librpc/gen_ndr/ndr_browser.c +++ b/bin/default/librpc/gen_ndr/ndr_browser.c @@ -67,6 +67,8 @@ static enum ndr_err_code ndr_pull_BrowserrSrvInfo100Ctr(struct ndr_pull *ndr, in } if (r->entries) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->entries, r->entries_read)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->entries_read)); } } return NDR_ERR_SUCCESS; @@ -156,6 +158,8 @@ static enum ndr_err_code ndr_pull_BrowserrSrvInfo101Ctr(struct ndr_pull *ndr, in } if (r->entries) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->entries, r->entries_read)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->entries_read)); } } return NDR_ERR_SUCCESS; diff --git a/bin/default/librpc/gen_ndr/ndr_dcom.c b/bin/default/librpc/gen_ndr/ndr_dcom.c index b1e5d45..47a2c3e 100644 --- a/bin/default/librpc/gen_ndr/ndr_dcom.c +++ b/bin/default/librpc/gen_ndr/ndr_dcom.c @@ -1116,6 +1116,8 @@ static enum ndr_err_code ndr_pull_RemQueryInterface(struct ndr_pull *ndr, int fl ZERO_STRUCTP(r->out.ORPCthat); if (r->in.iids) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.iids, r->in.cIids)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.cIids)); } } if (flags & NDR_OUT) { @@ -1152,6 +1154,8 @@ static enum ndr_err_code ndr_pull_RemQueryInterface(struct ndr_pull *ndr, int fl NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.ip) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.ip, r->in.cIids)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.cIids)); } } return NDR_ERR_SUCCESS; @@ -1276,6 +1280,8 @@ static enum ndr_err_code ndr_pull_RemAddRef(struct ndr_pull *ndr, int flags, str ZERO_STRUCTP(r->out.ORPCthat); if (r->in.InterfaceRefs) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.InterfaceRefs, r->in.cInterfaceRefs)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.cInterfaceRefs)); } } if (flags & NDR_OUT) { @@ -1309,6 +1315,8 @@ static enum ndr_err_code ndr_pull_RemAddRef(struct ndr_pull *ndr, int flags, str NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.pResults) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.pResults, r->in.cInterfaceRefs)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.cInterfaceRefs)); } } return NDR_ERR_SUCCESS; @@ -1408,6 +1416,8 @@ static enum ndr_err_code ndr_pull_RemRelease(struct ndr_pull *ndr, int flags, st ZERO_STRUCTP(r->out.ORPCthat); if (r->in.InterfaceRefs) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.InterfaceRefs, r->in.cInterfaceRefs)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.cInterfaceRefs)); } } if (flags & NDR_OUT) { @@ -2221,6 +2231,8 @@ static enum ndr_err_code ndr_pull_RemQueryInterface2(struct ndr_pull *ndr, int f ZERO_STRUCTP(r->out.ORPCthat); if (r->in.iids) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.iids, r->in.cIids)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.cIids)); } } if (flags & NDR_OUT) { @@ -2277,9 +2289,13 @@ static enum ndr_err_code ndr_pull_RemQueryInterface2(struct ndr_pull *ndr, int f NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.phr) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.phr, r->in.cIids)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.cIids)); } if (r->out.ppMIF) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.ppMIF, r->in.cIids)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.cIids)); } } return NDR_ERR_SUCCESS; @@ -2822,6 +2838,8 @@ static enum ndr_err_code ndr_pull_GetIDsOfNames(struct ndr_pull *ndr, int flags, NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.rgDispId) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.rgDispId, r->in.cNames)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.cNames)); } } return NDR_ERR_SUCCESS; @@ -3576,9 +3594,13 @@ static enum ndr_err_code ndr_pull_Read(struct ndr_pull *ndr, int flags, struct R NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.pv) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.pv, r->in.num_requested)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.num_requested)); } if (r->out.pv) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.pv, *r->out.num_read)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, *r->out.num_read)); } } return NDR_ERR_SUCCESS; @@ -3683,6 +3705,8 @@ static enum ndr_err_code ndr_pull_Write(struct ndr_pull *ndr, int flags, struct ZERO_STRUCTP(r->out.num_written); if (r->in.data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.data, r->in.num_requested)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.num_requested)); } } if (flags & NDR_OUT) { diff --git a/bin/default/librpc/gen_ndr/ndr_dfs.c b/bin/default/librpc/gen_ndr/ndr_dfs.c index 8112991..80c9625 100644 --- a/bin/default/librpc/gen_ndr/ndr_dfs.c +++ b/bin/default/librpc/gen_ndr/ndr_dfs.c @@ -531,6 +531,8 @@ static enum ndr_err_code ndr_pull_dfs_Info3(struct ndr_pull *ndr, int ndr_flags, } if (r->stores) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->stores, r->num_stores)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_stores)); } } return NDR_ERR_SUCCESS; @@ -701,6 +703,8 @@ static enum ndr_err_code ndr_pull_dfs_Info4(struct ndr_pull *ndr, int ndr_flags, } if (r->stores) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->stores, r->num_stores)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_stores)); } } return NDR_ERR_SUCCESS; @@ -1137,6 +1141,8 @@ static enum ndr_err_code ndr_pull_dfs_Info6(struct ndr_pull *ndr, int ndr_flags, } if (r->stores) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->stores, r->num_stores)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_stores)); } } return NDR_ERR_SUCCESS; @@ -2418,6 +2424,8 @@ static enum ndr_err_code ndr_pull_dfs_EnumArray1(struct ndr_pull *ndr, int ndr_f } if (r->s) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->s, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -2507,6 +2515,8 @@ static enum ndr_err_code ndr_pull_dfs_EnumArray2(struct ndr_pull *ndr, int ndr_f } if (r->s) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->s, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -2596,6 +2606,8 @@ static enum ndr_err_code ndr_pull_dfs_EnumArray3(struct ndr_pull *ndr, int ndr_f } if (r->s) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->s, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -2685,6 +2697,8 @@ static enum ndr_err_code ndr_pull_dfs_EnumArray4(struct ndr_pull *ndr, int ndr_f } if (r->s) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->s, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -2774,6 +2788,8 @@ static enum ndr_err_code ndr_pull_dfs_EnumArray5(struct ndr_pull *ndr, int ndr_f } if (r->s) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->s, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -2863,6 +2879,8 @@ static enum ndr_err_code ndr_pull_dfs_EnumArray6(struct ndr_pull *ndr, int ndr_f } if (r->s) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->s, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -2952,6 +2970,8 @@ static enum ndr_err_code ndr_pull_dfs_EnumArray200(struct ndr_pull *ndr, int ndr } if (r->s) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->s, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -3041,6 +3061,8 @@ static enum ndr_err_code ndr_pull_dfs_EnumArray300(struct ndr_pull *ndr, int ndr } if (r->s) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->s, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; diff --git a/bin/default/librpc/gen_ndr/ndr_dnsp.c b/bin/default/librpc/gen_ndr/ndr_dnsp.c index 54d5c4a..213fedf 100644 --- a/bin/default/librpc/gen_ndr/ndr_dnsp.c +++ b/bin/default/librpc/gen_ndr/ndr_dnsp.c @@ -486,6 +486,8 @@ static enum ndr_err_code ndr_pull_dnsp_ip4_array(struct ndr_pull *ndr, int ndr_f } if (r->addr) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->addr, r->addrCount)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->addrCount)); } } return NDR_ERR_SUCCESS; diff --git a/bin/default/librpc/gen_ndr/ndr_dnsserver.c b/bin/default/librpc/gen_ndr/ndr_dnsserver.c index 9cce696..1f234d8 100644 --- a/bin/default/librpc/gen_ndr/ndr_dnsserver.c +++ b/bin/default/librpc/gen_ndr/ndr_dnsserver.c @@ -59,6 +59,8 @@ static enum ndr_err_code ndr_pull_DNS_RPC_BUFFER(struct ndr_pull *ndr, int ndr_f NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->Buffer, size_Buffer_0)); if (r->Buffer) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->Buffer, r->dwLength)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->dwLength)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); } @@ -135,6 +137,8 @@ static enum ndr_err_code ndr_pull_DNS_RPC_UTF8_STRING_LIST(struct ndr_pull *ndr, NDR_PULL_SET_MEM_CTX(ndr, _mem_save_pszStrings_0, 0); if (r->pszStrings) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->pszStrings, r->dwCount)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->dwCount)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); } @@ -992,6 +996,8 @@ static enum ndr_err_code ndr_pull_IP4_ARRAY(struct ndr_pull *ndr, int ndr_flags, NDR_PULL_SET_MEM_CTX(ndr, _mem_save_AddrArray_0, 0); if (r->AddrArray) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->AddrArray, r->AddrCount)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->AddrCount)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); } @@ -1124,6 +1130,8 @@ static enum ndr_err_code ndr_pull_DNS_ADDR_ARRAY(struct ndr_pull *ndr, int ndr_f NDR_PULL_SET_MEM_CTX(ndr, _mem_save_AddrArray_0, 0); if (r->AddrArray) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->AddrArray, r->AddrCount)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->AddrCount)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); } @@ -3166,6 +3174,8 @@ static enum ndr_err_code ndr_pull_DNS_RPC_DP_INFO(struct ndr_pull *ndr, int ndr_ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ReplicaArray_0, 0); if (r->ReplicaArray) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->ReplicaArray, r->dwReplicaCount)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->dwReplicaCount)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); } @@ -3428,6 +3438,8 @@ static enum ndr_err_code ndr_pull_DNS_RPC_DP_LIST(struct ndr_pull *ndr, int ndr_ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DpArray_0, 0); if (r->DpArray) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->DpArray, r->dwDpCount)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->dwDpCount)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); } @@ -3962,6 +3974,8 @@ static enum ndr_err_code ndr_pull_DNS_RPC_ZONE_LIST_W2K(struct ndr_pull *ndr, in NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ZoneArray_0, 0); if (r->ZoneArray) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->ZoneArray, r->dwZoneCount)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->dwZoneCount)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); } @@ -4060,6 +4074,8 @@ static enum ndr_err_code ndr_pull_DNS_RPC_ZONE_LIST_DOTNET(struct ndr_pull *ndr, NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ZoneArray_0, 0); if (r->ZoneArray) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->ZoneArray, r->dwZoneCount)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->dwZoneCount)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); } diff --git a/bin/default/librpc/gen_ndr/ndr_drsblobs.c b/bin/default/librpc/gen_ndr/ndr_drsblobs.c index 31ff483..72ea43a 100644 --- a/bin/default/librpc/gen_ndr/ndr_drsblobs.c +++ b/bin/default/librpc/gen_ndr/ndr_drsblobs.c @@ -3658,6 +3658,8 @@ static enum ndr_err_code ndr_pull_ExtendedErrorAString(struct ndr_pull *ndr, int } if (r->string) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->string, r->__size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->__size)); } } return NDR_ERR_SUCCESS; @@ -3724,6 +3726,8 @@ static enum ndr_err_code ndr_pull_ExtendedErrorUString(struct ndr_pull *ndr, int } if (r->string) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->string, r->__size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->__size)); } } return NDR_ERR_SUCCESS; @@ -3791,6 +3795,8 @@ static enum ndr_err_code ndr_pull_ExtendedErrorBlob(struct ndr_pull *ndr, int nd } if (r->data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->length)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->length)); } } return NDR_ERR_SUCCESS; @@ -4306,6 +4312,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_ExtendedErrorInfo(struct ndr_pull *ndr, int NDR_PULL_SET_MEM_CTX(ndr, _mem_save_params_0, 0); if (r->params) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->params, r->num_params)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_params)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); } diff --git a/bin/default/librpc/gen_ndr/ndr_drsuapi.c b/bin/default/librpc/gen_ndr/ndr_drsuapi.c index ca13a54..bb5d750 100644 --- a/bin/default/librpc/gen_ndr/ndr_drsuapi.c +++ b/bin/default/librpc/gen_ndr/ndr_drsuapi.c @@ -586,6 +586,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsReplicaObjectIdentifier(struct ndr NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dn, size_dn_0, sizeof(uint16_t), CH_UTF16)); if (r->dn) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->dn, r->__ndr_size_dn + 1)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->__ndr_size_dn + 1)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); } @@ -924,6 +926,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsReplicaCursorCtrEx(struct ndr_pull * NDR_PULL_SET_MEM_CTX(ndr, _mem_save_cursors_0, 0); if (r->cursors) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->cursors, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); } @@ -1203,6 +1207,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsReplicaOID(struct ndr_pull *ndr, int } if (r->binary_oid) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->binary_oid, r->length)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->length)); } } return NDR_ERR_SUCCESS; @@ -1314,6 +1320,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsReplicaOIDMapping_Ctr(struct ndr_p } if (r->mappings) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->mappings, r->num_mappings)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_mappings)); } } return NDR_ERR_SUCCESS; @@ -1515,6 +1523,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsPartialAttributeSet(struct ndr_pull NDR_PULL_SET_MEM_CTX(ndr, _mem_save_attids_0, 0); if (r->attids) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->attids, r->num_attids)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_attids)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); } @@ -2061,6 +2071,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsReplicaCursor2CtrEx(struct ndr_pull NDR_PULL_SET_MEM_CTX(ndr, _mem_save_cursors_0, 0); if (r->cursors) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->cursors, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); } @@ -2216,6 +2228,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsAttributeValueCtr(struct ndr_pull *n } if (r->values) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->values, r->num_values)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_values)); } } return NDR_ERR_SUCCESS; @@ -2467,6 +2481,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsReplicaAttributeCtr(struct ndr_pull } if (r->attributes) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->attributes, r->num_attributes)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_attributes)); } } return NDR_ERR_SUCCESS; @@ -2666,6 +2682,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsReplicaMetaDataCtr(struct ndr_pull NDR_PULL_SET_MEM_CTX(ndr, _mem_save_meta_data_0, 0); if (r->meta_data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->meta_data, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); } @@ -3153,6 +3171,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsGetNCChangesCtr6(struct ndr_pull * } if (r->linked_attributes) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->linked_attributes, r->linked_attributes_count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->linked_attributes_count)); } } return NDR_ERR_SUCCESS; @@ -5001,12 +5021,18 @@ static enum ndr_err_code ndr_pull_drsuapi_DsGetMembershipsCtr1(struct ndr_pull * } if (r->info_array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->info_array, r->num_memberships)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_memberships)); } if (r->group_attrs) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->group_attrs, r->num_memberships)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_memberships)); } if (r->sids) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sids, r->num_sids)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_sids)); } } return NDR_ERR_SUCCESS; @@ -5254,6 +5280,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsGetMembershipsRequest1(struct ndr_pu } if (r->info_array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->info_array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -5451,6 +5479,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsGetNT4ChangeLogRequest1(struct ndr_p } if (r->restart_data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->restart_data, r->restart_length)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->restart_length)); } } return NDR_ERR_SUCCESS; @@ -5646,9 +5676,13 @@ static enum ndr_err_code ndr_pull_drsuapi_DsGetNT4ChangeLogInfo1(struct ndr_pull } if (r->restart_data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->restart_data, r->restart_length)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->restart_length)); } if (r->log_data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->log_data, r->log_length)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->log_length)); } } return NDR_ERR_SUCCESS; @@ -6019,6 +6053,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsNameRequest1(struct ndr_pull *ndr, i } if (r->names) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->names, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -6303,6 +6339,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsNameCtr1(struct ndr_pull *ndr, int n } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -6556,6 +6594,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsWriteAccountSpnRequest1(struct ndr_p } if (r->spn_names) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->spn_names, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -7531,6 +7571,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsGetDCInfoCtr1(struct ndr_pull *ndr, } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -7935,6 +7977,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsGetDCInfoCtr2(struct ndr_pull *ndr, } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -8342,6 +8386,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsGetDCInfoCtr3(struct ndr_pull *ndr, } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -8531,6 +8577,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsGetDCConnectionCtr01(struct ndr_pull } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -8878,6 +8926,8 @@ static enum ndr_err_code ndr_pull_drsuapi_SecBuffer(struct ndr_pull *ndr, int nd } if (r->buffer) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->buffer, r->buf_size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->buf_size)); } } return NDR_ERR_SUCCESS; @@ -8967,6 +9017,8 @@ static enum ndr_err_code ndr_pull_drsuapi_SecBufferDesc(struct ndr_pull *ndr, in } if (r->buffers) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->buffers, r->buff_count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->buff_count)); } } return NDR_ERR_SUCCESS; @@ -10251,6 +10303,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsAddEntryCtr2(struct ndr_pull *ndr, i } if (r->objects) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->objects, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -10394,6 +10448,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsAddEntryCtr3(struct ndr_pull *ndr, i } if (r->objects) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->objects, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -11328,6 +11384,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsReplicaNeighbourCtr(struct ndr_pull NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0); if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); } @@ -11400,6 +11458,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsReplicaCursorCtr(struct ndr_pull *nd NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0); if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); } @@ -11552,6 +11612,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsReplicaObjMetaDataCtr(struct ndr_pul NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0); if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); } @@ -11708,6 +11770,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsReplicaKccDsaFailuresCtr(struct ndr_ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0); if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); } @@ -11975,6 +12039,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsReplicaOpCtr(struct ndr_pull *ndr, i NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0); if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); } @@ -12204,6 +12270,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsReplicaAttrValMetaDataCtr(struct ndr NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0); if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); } @@ -12276,6 +12344,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsReplicaCursor2Ctr(struct ndr_pull *n NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0); if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); } @@ -12422,6 +12492,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsReplicaCursor3Ctr(struct ndr_pull *n NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0); if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); } @@ -12618,6 +12690,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsReplicaObjMetaData2Ctr(struct ndr_pu NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0); if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); } @@ -12884,6 +12958,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsReplicaAttrValMetaData2Ctr(struct nd NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0); if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); } @@ -13022,6 +13098,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsReplicaConnection04Ctr(struct ndr_pu NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0); if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); } @@ -13183,6 +13261,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsReplica06Ctr(struct ndr_pull *ndr, i NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0); if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); } @@ -14021,6 +14101,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsGetMemberships2Request1(struct ndr_p } if (r->req_array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->req_array, r->num_req)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_req)); } } return NDR_ERR_SUCCESS; @@ -14233,6 +14315,8 @@ static enum ndr_err_code ndr_pull_drsuapi_QuerySitesByCostCtr1(struct ndr_pull * } if (r->info) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->info, r->num_info)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_info)); } } return NDR_ERR_SUCCESS; @@ -14466,6 +14550,8 @@ static enum ndr_err_code ndr_pull_drsuapi_QuerySitesByCostRequest1(struct ndr_pu } if (r->site_to) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->site_to, r->num_req)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_req)); } } return NDR_ERR_SUCCESS; diff --git a/bin/default/librpc/gen_ndr/ndr_echo.c b/bin/default/librpc/gen_ndr/ndr_echo.c index c70fe33..075b323 100644 --- a/bin/default/librpc/gen_ndr/ndr_echo.c +++ b/bin/default/librpc/gen_ndr/ndr_echo.c @@ -667,6 +667,8 @@ static enum ndr_err_code ndr_pull_echo_Surrounding(struct ndr_pull *ndr, int ndr NDR_PULL_SET_MEM_CTX(ndr, _mem_save_surrounding_0, 0); if (r->surrounding) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->surrounding, r->x)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->x)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); } @@ -785,6 +787,8 @@ static enum ndr_err_code ndr_pull_echo_EchoData(struct ndr_pull *ndr, int flags, NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.in_data, size_in_data_0)); if (r->in.in_data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.in_data, r->in.len)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.len)); } } if (flags & NDR_OUT) { @@ -794,6 +798,8 @@ static enum ndr_err_code ndr_pull_echo_EchoData(struct ndr_pull *ndr, int flags, NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.out_data, size_out_data_0)); if (r->out.out_data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.out_data, r->in.len)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.len)); } } return NDR_ERR_SUCCESS; @@ -848,6 +854,8 @@ static enum ndr_err_code ndr_pull_echo_SinkData(struct ndr_pull *ndr, int flags, NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.data, size_data_0)); if (r->in.data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.data, r->in.len)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.len)); } } if (flags & NDR_OUT) { @@ -907,6 +915,8 @@ static enum ndr_err_code ndr_pull_echo_SourceData(struct ndr_pull *ndr, int flag NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.data, size_data_0)); if (r->out.data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.data, r->in.len)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.len)); } } return NDR_ERR_SUCCESS; diff --git a/bin/default/librpc/gen_ndr/ndr_efs.c b/bin/default/librpc/gen_ndr/ndr_efs.c index 980dc00..8726cf7 100644 --- a/bin/default/librpc/gen_ndr/ndr_efs.c +++ b/bin/default/librpc/gen_ndr/ndr_efs.c @@ -51,6 +51,8 @@ static enum ndr_err_code ndr_pull_EFS_HASH_BLOB(struct ndr_pull *ndr, int ndr_fl } if (r->pbData) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->pbData, r->cbData)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->cbData)); } } return NDR_ERR_SUCCESS; @@ -241,6 +243,8 @@ static enum ndr_err_code ndr_pull_ENCRYPTION_CERTIFICATE_HASH_LIST(struct ndr_pu NDR_PULL_SET_MEM_CTX(ndr, _mem_save_pUsers_0, 0); if (r->pUsers) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->pUsers, r->nCert_Hash)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->nCert_Hash)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); } @@ -331,6 +335,8 @@ static enum ndr_err_code ndr_pull_EFS_CERTIFICATE_BLOB(struct ndr_pull *ndr, int } if (r->pbData) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->pbData, r->cbData)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->cbData)); } } return NDR_ERR_SUCCESS; diff --git a/bin/default/librpc/gen_ndr/ndr_epmapper.c b/bin/default/librpc/gen_ndr/ndr_epmapper.c index be3be01..b6a6eb7 100644 --- a/bin/default/librpc/gen_ndr/ndr_epmapper.c +++ b/bin/default/librpc/gen_ndr/ndr_epmapper.c @@ -2045,6 +2045,8 @@ static enum ndr_err_code ndr_pull_epm_Insert(struct ndr_pull *ndr, int flags, st NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.replace)); if (r->in.entries) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.entries, r->in.num_ents)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.num_ents)); } } if (flags & NDR_OUT) { @@ -2126,6 +2128,8 @@ static enum ndr_err_code ndr_pull_epm_Delete(struct ndr_pull *ndr, int flags, st NDR_PULL_SET_MEM_CTX(ndr, _mem_save_entries_0, 0); if (r->in.entries) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.entries, r->in.num_ents)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.num_ents)); } } if (flags & NDR_OUT) { @@ -2298,9 +2302,13 @@ static enum ndr_err_code ndr_pull_epm_Lookup(struct ndr_pull *ndr, int flags, st NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->out.result)); if (r->out.entries) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.entries, r->in.max_ents)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.max_ents)); } if (r->out.entries) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.entries, *r->out.num_ents)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, *r->out.num_ents)); } } return NDR_ERR_SUCCESS; @@ -2492,9 +2500,13 @@ _PUBLIC_ enum ndr_err_code ndr_pull_epm_Map(struct ndr_pull *ndr, int flags, str NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->out.result)); if (r->out.towers) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.towers, r->in.max_towers)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.max_towers)); } if (r->out.towers) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.towers, *r->out.num_towers)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, *r->out.num_towers)); } } return NDR_ERR_SUCCESS; diff --git a/bin/default/librpc/gen_ndr/ndr_eventlog.c b/bin/default/librpc/gen_ndr/ndr_eventlog.c index 441edfd..07c3078 100644 --- a/bin/default/librpc/gen_ndr/ndr_eventlog.c +++ b/bin/default/librpc/gen_ndr/ndr_eventlog.c @@ -1719,6 +1719,8 @@ static enum ndr_err_code ndr_pull_eventlog_ReadEventLogW(struct ndr_pull *ndr, i NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result)); if (r->out.data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.data, r->in.number_of_bytes)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.number_of_bytes)); } } return NDR_ERR_SUCCESS; @@ -1965,9 +1967,13 @@ static enum ndr_err_code ndr_pull_eventlog_ReportEventW(struct ndr_pull *ndr, in } if (r->in.strings) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.strings, r->in.num_of_strings)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.num_of_strings)); } if (r->in.data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.data, r->in.data_size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.data_size)); } } if (flags & NDR_OUT) { @@ -2599,6 +2605,8 @@ static enum ndr_err_code ndr_pull_eventlog_GetLogInformation(struct ndr_pull *nd NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result)); if (r->out.buffer) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.buf_size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.buf_size)); } } return NDR_ERR_SUCCESS; @@ -2912,9 +2920,13 @@ static enum ndr_err_code ndr_pull_eventlog_ReportEventAndSourceW(struct ndr_pull } if (r->in.strings) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.strings, r->in.num_of_strings)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.num_of_strings)); } if (r->in.data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.data, r->in.data_size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.data_size)); } } if (flags & NDR_OUT) { diff --git a/bin/default/librpc/gen_ndr/ndr_eventlog6.c b/bin/default/librpc/gen_ndr/ndr_eventlog6.c index 5e7f6e7..67b96cc 100644 --- a/bin/default/librpc/gen_ndr/ndr_eventlog6.c +++ b/bin/default/librpc/gen_ndr/ndr_eventlog6.c @@ -95,6 +95,8 @@ static enum ndr_err_code ndr_pull_eventlog6_boolean8Array(struct ndr_pull *ndr, } if (r->ptr) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->ptr, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -175,6 +177,8 @@ static enum ndr_err_code ndr_pull_eventlog6_UInt32Array(struct ndr_pull *ndr, in } if (r->ptr) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->ptr, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -261,6 +265,8 @@ static enum ndr_err_code ndr_pull_eventlog6_UInt64Array(struct ndr_pull *ndr, in } if (r->ptr) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->ptr, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -379,6 +385,8 @@ static enum ndr_err_code ndr_pull_eventlog6_StringArray(struct ndr_pull *ndr, in } if (r->ptr) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->ptr, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -470,6 +478,8 @@ static enum ndr_err_code ndr_pull_eventlog6_GuidArray(struct ndr_pull *ndr, int } if (r->ptr) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->ptr, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -982,6 +992,8 @@ static enum ndr_err_code ndr_pull_eventlog6_EvtRpcVariantList(struct ndr_pull *n } if (r->props) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->props, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -1312,6 +1324,8 @@ static enum ndr_err_code ndr_pull_eventlog6_EvtRpcRegisterRemoteSubscription(str NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (*r->out.queryChannelInfo) { NDR_CHECK(ndr_check_array_size(ndr, (void*)r->out.queryChannelInfo, *r->out.queryChannelInfoSize)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->out.queryChannelInfoSize)); } } return NDR_ERR_SUCCESS; @@ -1587,12 +1601,18 @@ static enum ndr_err_code ndr_pull_eventlog6_EvtRpcRemoteSubscriptionNextAsync(st NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (*r->out.eventDataIndices) { NDR_CHECK(ndr_check_array_size(ndr, (void*)r->out.eventDataIndices, *r->out.numActualRecords)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->out.numActualRecords)); } if (*r->out.eventDataSizes) { NDR_CHECK(ndr_check_array_size(ndr, (void*)r->out.eventDataSizes, *r->out.numActualRecords)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->out.numActualRecords)); } if (*r->out.resultBuffer) { NDR_CHECK(ndr_check_array_size(ndr, (void*)r->out.resultBuffer, *r->out.resultBufferSize)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->out.resultBufferSize)); } } return NDR_ERR_SUCCESS; @@ -1875,12 +1895,18 @@ static enum ndr_err_code ndr_pull_eventlog6_EvtRpcRemoteSubscriptionNext(struct NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (*r->out.eventDataIndices) { NDR_CHECK(ndr_check_array_size(ndr, (void*)r->out.eventDataIndices, *r->out.numActualRecords)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->out.numActualRecords)); } if (*r->out.eventDataSizes) { NDR_CHECK(ndr_check_array_size(ndr, (void*)r->out.eventDataSizes, *r->out.numActualRecords)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->out.numActualRecords)); } if (*r->out.resultBuffer) { NDR_CHECK(ndr_check_array_size(ndr, (void*)r->out.resultBuffer, *r->out.resultBufferSize)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->out.resultBufferSize)); } } return NDR_ERR_SUCCESS; @@ -2281,6 +2307,8 @@ static enum ndr_err_code ndr_pull_eventlog6_EvtRpcRegisterLogQuery(struct ndr_pu NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (*r->out.queryChannelInfo) { NDR_CHECK(ndr_check_array_size(ndr, (void*)r->out.queryChannelInfo, *r->out.queryChannelInfoSize)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->out.queryChannelInfoSize)); } } return NDR_ERR_SUCCESS; @@ -2901,6 +2929,8 @@ static enum ndr_err_code ndr_pull_eventlog6_EvtRpcMessageRender(struct ndr_pull ZERO_STRUCTP(r->out.error); if (r->in.eventId) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.eventId, r->in.sizeEventId)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.sizeEventId)); } } if (flags & NDR_OUT) { @@ -2952,6 +2982,8 @@ static enum ndr_err_code ndr_pull_eventlog6_EvtRpcMessageRender(struct ndr_pull NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (*r->out.string) { NDR_CHECK(ndr_check_array_size(ndr, (void*)r->out.string, *r->out.actualSizeString)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->out.actualSizeString)); } } return NDR_ERR_SUCCESS; @@ -3105,6 +3137,8 @@ static enum ndr_err_code ndr_pull_eventlog6_EvtRpcMessageRenderDefault(struct nd ZERO_STRUCTP(r->out.error); if (r->in.eventId) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.eventId, r->in.sizeEventId)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.sizeEventId)); } } if (flags & NDR_OUT) { @@ -3156,6 +3190,8 @@ static enum ndr_err_code ndr_pull_eventlog6_EvtRpcMessageRenderDefault(struct nd NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (*r->out.string) { NDR_CHECK(ndr_check_array_size(ndr, (void*)r->out.string, *r->out.actualSizeString)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->out.actualSizeString)); } } return NDR_ERR_SUCCESS; @@ -3418,12 +3454,18 @@ static enum ndr_err_code ndr_pull_eventlog6_EvtRpcQueryNext(struct ndr_pull *ndr NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (*r->out.eventDataIndices) { NDR_CHECK(ndr_check_array_size(ndr, (void*)r->out.eventDataIndices, *r->out.numActualRecords)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->out.numActualRecords)); } if (*r->out.eventDataSizes) { NDR_CHECK(ndr_check_array_size(ndr, (void*)r->out.eventDataSizes, *r->out.numActualRecords)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->out.numActualRecords)); } if (*r->out.resultBuffer) { NDR_CHECK(ndr_check_array_size(ndr, (void*)r->out.resultBuffer, *r->out.resultBufferSize)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->out.resultBufferSize)); } } return NDR_ERR_SUCCESS; @@ -4148,6 +4190,8 @@ static enum ndr_err_code ndr_pull_eventlog6_EvtRpcGetLogFileInfo(struct ndr_pull NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.propertyValueBuffer) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.propertyValueBuffer, r->in.propertyValueBufferSize)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.propertyValueBufferSize)); } } return NDR_ERR_SUCCESS; @@ -4313,6 +4357,8 @@ static enum ndr_err_code ndr_pull_eventlog6_EvtRpcGetChannelList(struct ndr_pull NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (*r->out.channelPaths) { NDR_CHECK(ndr_check_array_size(ndr, (void*)r->out.channelPaths, *r->out.numChannelPaths)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->out.numChannelPaths)); } } return NDR_ERR_SUCCESS; @@ -4695,6 +4741,8 @@ static enum ndr_err_code ndr_pull_eventlog6_EvtRpcGetPublisherList(struct ndr_pu NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (*r->out.publisherIds) { NDR_CHECK(ndr_check_array_size(ndr, (void*)r->out.publisherIds, *r->out.numPublisherIds)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->out.numPublisherIds)); } } return NDR_ERR_SUCCESS; @@ -4883,6 +4931,8 @@ static enum ndr_err_code ndr_pull_eventlog6_EvtRpcGetPublisherListForChannel(str NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (*r->out.publisherIds) { NDR_CHECK(ndr_check_array_size(ndr, (void*)r->out.publisherIds, *r->out.numPublisherIds)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->out.numPublisherIds)); } } return NDR_ERR_SUCCESS; @@ -5431,6 +5481,8 @@ static enum ndr_err_code ndr_pull_eventlog6_EvtRpcGetNextEventMetadata(struct nd NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (*r->out.eventMetadataInstances) { NDR_CHECK(ndr_check_array_size(ndr, (void*)r->out.eventMetadataInstances, *r->out.numReturned)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->out.numReturned)); } } return NDR_ERR_SUCCESS; diff --git a/bin/default/librpc/gen_ndr/ndr_frstrans.c b/bin/default/librpc/gen_ndr/ndr_frstrans.c index 25e46ae..df49501 100644 --- a/bin/default/librpc/gen_ndr/ndr_frstrans.c +++ b/bin/default/librpc/gen_ndr/ndr_frstrans.c @@ -234,6 +234,8 @@ static enum ndr_err_code ndr_pull_frstrans_Update(struct ndr_pull *ndr, int ndr_ NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->flags)); if (r->name) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->name, 261)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, 261)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); } @@ -478,9 +480,13 @@ static enum ndr_err_code ndr_pull_frstrans_AsyncVersionVectorResponse(struct ndr } if (r->version_vector) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->version_vector, r->version_vector_count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->version_vector_count)); } if (r->epoque_vector) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->epoque_vector, r->epoque_vector_count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->epoque_vector_count)); } } return NDR_ERR_SUCCESS; @@ -1019,6 +1025,8 @@ static enum ndr_err_code ndr_pull_frstrans_RdcFileInfo(struct ndr_pull *ndr, int NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rdc_filter_parameters_0, 0); if (r->rdc_filter_parameters) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->rdc_filter_parameters, r->rdc_signature_levels)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->rdc_signature_levels)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); } @@ -1395,6 +1403,8 @@ static enum ndr_err_code ndr_pull_frstrans_RequestUpdates(struct ndr_pull *ndr, ZERO_STRUCTP(r->out.gvsn_version); if (r->in.version_vector_diff) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.version_vector_diff, r->in.version_vector_diff_count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.version_vector_diff_count)); } } if (flags & NDR_OUT) { @@ -1445,9 +1455,13 @@ static enum ndr_err_code ndr_pull_frstrans_RequestUpdates(struct ndr_pull *ndr, NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.frs_update) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.frs_update, r->in.credits_available)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.credits_available)); } if (r->out.frs_update) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.frs_update, *r->out.update_count)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, *r->out.update_count)); } } return NDR_ERR_SUCCESS; @@ -2117,9 +2131,13 @@ static enum ndr_err_code ndr_pull_frstrans_InitializeFileTransferAsync(struct nd NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.data_buffer) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.data_buffer, r->in.buffer_size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.buffer_size)); } if (r->out.data_buffer) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.data_buffer, *r->out.size_read)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, *r->out.size_read)); } } return NDR_ERR_SUCCESS; diff --git a/bin/default/librpc/gen_ndr/ndr_ioctl.c b/bin/default/librpc/gen_ndr/ndr_ioctl.c index d19548d..088701f 100644 --- a/bin/default/librpc/gen_ndr/ndr_ioctl.c +++ b/bin/default/librpc/gen_ndr/ndr_ioctl.c @@ -198,3 +198,315 @@ _PUBLIC_ void ndr_print_srv_copychunk_rsp(struct ndr_print *ndr, const char *nam ndr->depth--; } +_PUBLIC_ enum ndr_err_code ndr_push_device_copy_offload_descriptor(struct ndr_push *ndr, int ndr_flags, const struct device_copy_offload_descriptor *r) +{ + NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags); + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_push_align(ndr, 8)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maximum_token_lifetime)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->default_token_lifetime)); + NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->maximum_xfer_size)); + NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->optimal_xfer_count)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maximum_data_descriptors)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maximum_xfer_length_per_descriptor)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->optimal_xfer_length_per_descriptor)); + NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->optimal_xfer_length_granularity)); + NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->reserved, 2)); + NDR_CHECK(ndr_push_trailer_align(ndr, 8)); + } + if (ndr_flags & NDR_BUFFERS) { + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ enum ndr_err_code ndr_pull_device_copy_offload_descriptor(struct ndr_pull *ndr, int ndr_flags, struct device_copy_offload_descriptor *r) +{ + uint32_t size_reserved_0 = 0; + NDR_PULL_CHECK_FLAGS(ndr, ndr_flags); + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_pull_align(ndr, 8)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maximum_token_lifetime)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->default_token_lifetime)); + NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->maximum_xfer_size)); + NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->optimal_xfer_count)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maximum_data_descriptors)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maximum_xfer_length_per_descriptor)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->optimal_xfer_length_per_descriptor)); + NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->optimal_xfer_length_granularity)); + size_reserved_0 = 2; + NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->reserved, size_reserved_0)); + NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); + } + if (ndr_flags & NDR_BUFFERS) { + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_device_copy_offload_descriptor(struct ndr_print *ndr, const char *name, const struct device_copy_offload_descriptor *r) +{ + ndr_print_struct(ndr, name, "device_copy_offload_descriptor"); + if (r == NULL) { ndr_print_null(ndr); return; } + ndr->depth++; + ndr_print_uint32(ndr, "version", r->version); + ndr_print_uint32(ndr, "size", r->size); + ndr_print_uint32(ndr, "maximum_token_lifetime", r->maximum_token_lifetime); + ndr_print_uint32(ndr, "default_token_lifetime", r->default_token_lifetime); + ndr_print_hyper(ndr, "maximum_xfer_size", r->maximum_xfer_size); + ndr_print_hyper(ndr, "optimal_xfer_count", r->optimal_xfer_count); + ndr_print_uint32(ndr, "maximum_data_descriptors", r->maximum_data_descriptors); + ndr_print_uint32(ndr, "maximum_xfer_length_per_descriptor", r->maximum_xfer_length_per_descriptor); + ndr_print_uint32(ndr, "optimal_xfer_length_per_descriptor", r->optimal_xfer_length_per_descriptor); + ndr_print_uint16(ndr, "optimal_xfer_length_granularity", r->optimal_xfer_length_granularity); + ndr_print_array_uint8(ndr, "reserved", r->reserved, 2); + ndr->depth--; +} + +_PUBLIC_ enum ndr_err_code ndr_push_storage_offload_token(struct ndr_push *ndr, int ndr_flags, const struct storage_offload_token *r) +{ + NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags); + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->token_id_len)); + NDR_CHECK(ndr_push_align(ndr, 4)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->token_type)); + NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->reserved, 2)); + NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->token_id_len)); + NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->token, r->token_id_len)); + NDR_CHECK(ndr_push_trailer_align(ndr, 4)); + } + if (ndr_flags & NDR_BUFFERS) { + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ enum ndr_err_code ndr_pull_storage_offload_token(struct ndr_pull *ndr, int ndr_flags, struct storage_offload_token *r) +{ + uint32_t size_reserved_0 = 0; + uint32_t size_token_0 = 0; + NDR_PULL_CHECK_FLAGS(ndr, ndr_flags); + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_pull_array_size(ndr, &r->token)); + NDR_CHECK(ndr_pull_align(ndr, 4)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->token_type)); + size_reserved_0 = 2; + NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->reserved, size_reserved_0)); + NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->token_id_len)); + size_token_0 = ndr_get_array_size(ndr, &r->token); + NDR_PULL_ALLOC_N(ndr, r->token, size_token_0); + NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->token, size_token_0)); + if (r->token) { + NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->token, r->token_id_len)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->token_id_len)); + } + NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); + } + if (ndr_flags & NDR_BUFFERS) { + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_storage_offload_token(struct ndr_print *ndr, const char *name, const struct storage_offload_token *r) +{ + ndr_print_struct(ndr, name, "storage_offload_token"); + if (r == NULL) { ndr_print_null(ndr); return; } + ndr->depth++; + ndr_print_uint32(ndr, "token_type", r->token_type); + ndr_print_array_uint8(ndr, "reserved", r->reserved, 2); + ndr_print_uint16(ndr, "token_id_len", r->token_id_len); + ndr_print_array_uint8(ndr, "token", r->token, r->token_id_len); + ndr->depth--; +} + +_PUBLIC_ enum ndr_err_code ndr_push_fsctl_offload_read_input(struct ndr_push *ndr, int ndr_flags, const struct fsctl_offload_read_input *r) +{ + NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags); + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_push_align(ndr, 8)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->token_time_to_live)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved)); + NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->file_offset)); + NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->length)); + NDR_CHECK(ndr_push_trailer_align(ndr, 8)); + } + if (ndr_flags & NDR_BUFFERS) { + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ enum ndr_err_code ndr_pull_fsctl_offload_read_input(struct ndr_pull *ndr, int ndr_flags, struct fsctl_offload_read_input *r) +{ + NDR_PULL_CHECK_FLAGS(ndr, ndr_flags); + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_pull_align(ndr, 8)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->flags)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->token_time_to_live)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved)); + NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->file_offset)); + NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->length)); + NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); + } + if (ndr_flags & NDR_BUFFERS) { + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_fsctl_offload_read_input(struct ndr_print *ndr, const char *name, const struct fsctl_offload_read_input *r) +{ + ndr_print_struct(ndr, name, "fsctl_offload_read_input"); + if (r == NULL) { ndr_print_null(ndr); return; } + ndr->depth++; + ndr_print_uint32(ndr, "size", r->size); + ndr_print_uint32(ndr, "flags", r->flags); + ndr_print_uint32(ndr, "token_time_to_live", r->token_time_to_live); + ndr_print_uint32(ndr, "reserved", r->reserved); + ndr_print_hyper(ndr, "file_offset", r->file_offset); + ndr_print_hyper(ndr, "length", r->length); + ndr->depth--; +} + +_PUBLIC_ enum ndr_err_code ndr_push_fsctl_offload_read_output(struct ndr_push *ndr, int ndr_flags, const struct fsctl_offload_read_output *r) +{ + NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags); + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_push_align(ndr, 8)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags)); + NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->xfer_length)); + NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->token, 512)); + NDR_CHECK(ndr_push_trailer_align(ndr, 8)); + } + if (ndr_flags & NDR_BUFFERS) { + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ enum ndr_err_code ndr_pull_fsctl_offload_read_output(struct ndr_pull *ndr, int ndr_flags, struct fsctl_offload_read_output *r) +{ + uint32_t size_token_0 = 0; + NDR_PULL_CHECK_FLAGS(ndr, ndr_flags); + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_pull_align(ndr, 8)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->flags)); + NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->xfer_length)); + size_token_0 = 512; + NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->token, size_token_0)); + NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); + } + if (ndr_flags & NDR_BUFFERS) { + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_fsctl_offload_read_output(struct ndr_print *ndr, const char *name, const struct fsctl_offload_read_output *r) +{ + ndr_print_struct(ndr, name, "fsctl_offload_read_output"); + if (r == NULL) { ndr_print_null(ndr); return; } + ndr->depth++; + ndr_print_uint32(ndr, "size", r->size); + ndr_print_uint32(ndr, "flags", r->flags); + ndr_print_hyper(ndr, "xfer_length", r->xfer_length); + ndr_print_array_uint8(ndr, "token", r->token, 512); + ndr->depth--; +} + +_PUBLIC_ enum ndr_err_code ndr_push_fsctl_offload_write_input(struct ndr_push *ndr, int ndr_flags, const struct fsctl_offload_write_input *r) +{ + NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags); + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_push_align(ndr, 8)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags)); + NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->file_offset)); + NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->copy_length)); + NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->xfer_offset)); + NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->token, 512)); + NDR_CHECK(ndr_push_trailer_align(ndr, 8)); + } + if (ndr_flags & NDR_BUFFERS) { + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ enum ndr_err_code ndr_pull_fsctl_offload_write_input(struct ndr_pull *ndr, int ndr_flags, struct fsctl_offload_write_input *r) +{ + uint32_t size_token_0 = 0; + NDR_PULL_CHECK_FLAGS(ndr, ndr_flags); + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_pull_align(ndr, 8)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->flags)); + NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->file_offset)); + NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->copy_length)); + NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->xfer_offset)); + size_token_0 = 512; + NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->token, size_token_0)); + NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); + } + if (ndr_flags & NDR_BUFFERS) { + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_fsctl_offload_write_input(struct ndr_print *ndr, const char *name, const struct fsctl_offload_write_input *r) +{ + ndr_print_struct(ndr, name, "fsctl_offload_write_input"); + if (r == NULL) { ndr_print_null(ndr); return; } + ndr->depth++; + ndr_print_uint32(ndr, "size", r->size); + ndr_print_uint32(ndr, "flags", r->flags); + ndr_print_hyper(ndr, "file_offset", r->file_offset); + ndr_print_hyper(ndr, "copy_length", r->copy_length); + ndr_print_hyper(ndr, "xfer_offset", r->xfer_offset); + ndr_print_array_uint8(ndr, "token", r->token, 512); + ndr->depth--; +} + +_PUBLIC_ enum ndr_err_code ndr_push_fsctl_offload_write_output(struct ndr_push *ndr, int ndr_flags, const struct fsctl_offload_write_output *r) +{ + NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags); + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_push_align(ndr, 8)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags)); + NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->length_written)); + NDR_CHECK(ndr_push_trailer_align(ndr, 8)); + } + if (ndr_flags & NDR_BUFFERS) { + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ enum ndr_err_code ndr_pull_fsctl_offload_write_output(struct ndr_pull *ndr, int ndr_flags, struct fsctl_offload_write_output *r) +{ + NDR_PULL_CHECK_FLAGS(ndr, ndr_flags); + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_pull_align(ndr, 8)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->flags)); + NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->length_written)); + NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); + } + if (ndr_flags & NDR_BUFFERS) { + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_fsctl_offload_write_output(struct ndr_print *ndr, const char *name, const struct fsctl_offload_write_output *r) +{ + ndr_print_struct(ndr, name, "fsctl_offload_write_output"); + if (r == NULL) { ndr_print_null(ndr); return; } + ndr->depth++; + ndr_print_uint32(ndr, "size", r->size); + ndr_print_uint32(ndr, "flags", r->flags); + ndr_print_hyper(ndr, "length_written", r->length_written); + ndr->depth--; +} + diff --git a/bin/default/librpc/gen_ndr/ndr_ioctl.h b/bin/default/librpc/gen_ndr/ndr_ioctl.h index f49a105..f16d20e 100644 --- a/bin/default/librpc/gen_ndr/ndr_ioctl.h +++ b/bin/default/librpc/gen_ndr/ndr_ioctl.h @@ -17,4 +17,22 @@ void ndr_print_srv_copychunk_copy(struct ndr_print *ndr, const char *name, const enum ndr_err_code ndr_push_srv_copychunk_rsp(struct ndr_push *ndr, int ndr_flags, const struct srv_copychunk_rsp *r); enum ndr_err_code ndr_pull_srv_copychunk_rsp(struct ndr_pull *ndr, int ndr_flags, struct srv_copychunk_rsp *r); void ndr_print_srv_copychunk_rsp(struct ndr_print *ndr, const char *name, const struct srv_copychunk_rsp *r); +enum ndr_err_code ndr_push_device_copy_offload_descriptor(struct ndr_push *ndr, int ndr_flags, const struct device_copy_offload_descriptor *r); +enum ndr_err_code ndr_pull_device_copy_offload_descriptor(struct ndr_pull *ndr, int ndr_flags, struct device_copy_offload_descriptor *r); +void ndr_print_device_copy_offload_descriptor(struct ndr_print *ndr, const char *name, const struct device_copy_offload_descriptor *r); +enum ndr_err_code ndr_push_storage_offload_token(struct ndr_push *ndr, int ndr_flags, const struct storage_offload_token *r); +enum ndr_err_code ndr_pull_storage_offload_token(struct ndr_pull *ndr, int ndr_flags, struct storage_offload_token *r); +void ndr_print_storage_offload_token(struct ndr_print *ndr, const char *name, const struct storage_offload_token *r); +enum ndr_err_code ndr_push_fsctl_offload_read_input(struct ndr_push *ndr, int ndr_flags, const struct fsctl_offload_read_input *r); +enum ndr_err_code ndr_pull_fsctl_offload_read_input(struct ndr_pull *ndr, int ndr_flags, struct fsctl_offload_read_input *r); +void ndr_print_fsctl_offload_read_input(struct ndr_print *ndr, const char *name, const struct fsctl_offload_read_input *r); +enum ndr_err_code ndr_push_fsctl_offload_read_output(struct ndr_push *ndr, int ndr_flags, const struct fsctl_offload_read_output *r); +enum ndr_err_code ndr_pull_fsctl_offload_read_output(struct ndr_pull *ndr, int ndr_flags, struct fsctl_offload_read_output *r); +void ndr_print_fsctl_offload_read_output(struct ndr_print *ndr, const char *name, const struct fsctl_offload_read_output *r); +enum ndr_err_code ndr_push_fsctl_offload_write_input(struct ndr_push *ndr, int ndr_flags, const struct fsctl_offload_write_input *r); +enum ndr_err_code ndr_pull_fsctl_offload_write_input(struct ndr_pull *ndr, int ndr_flags, struct fsctl_offload_write_input *r); +void ndr_print_fsctl_offload_write_input(struct ndr_print *ndr, const char *name, const struct fsctl_offload_write_input *r); +enum ndr_err_code ndr_push_fsctl_offload_write_output(struct ndr_push *ndr, int ndr_flags, const struct fsctl_offload_write_output *r); +enum ndr_err_code ndr_pull_fsctl_offload_write_output(struct ndr_pull *ndr, int ndr_flags, struct fsctl_offload_write_output *r); +void ndr_print_fsctl_offload_write_output(struct ndr_print *ndr, const char *name, const struct fsctl_offload_write_output *r); #endif /* _HEADER_NDR_copychunk */ diff --git a/bin/default/librpc/gen_ndr/ndr_krb5pac.c b/bin/default/librpc/gen_ndr/ndr_krb5pac.c index 94cf38e..a463061 100644 --- a/bin/default/librpc/gen_ndr/ndr_krb5pac.c +++ b/bin/default/librpc/gen_ndr/ndr_krb5pac.c @@ -246,6 +246,8 @@ static enum ndr_err_code ndr_pull_PAC_CONSTRAINED_DELEGATION(struct ndr_pull *nd } if (r->transited_services) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->transited_services, r->num_transited_services)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_transited_services)); } } return NDR_ERR_SUCCESS; diff --git a/bin/default/librpc/gen_ndr/ndr_lsa.c b/bin/default/librpc/gen_ndr/ndr_lsa.c index 72ea1f1..c774279 100644 --- a/bin/default/librpc/gen_ndr/ndr_lsa.c +++ b/bin/default/librpc/gen_ndr/ndr_lsa.c @@ -61,9 +61,13 @@ _PUBLIC_ enum ndr_err_code ndr_pull_lsa_String(struct ndr_pull *ndr, int ndr_fla } if (r->string) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->string, r->size / 2)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->size / 2)); } if (r->string) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->string, r->length / 2)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, r->length / 2)); } } return NDR_ERR_SUCCESS; @@ -141,9 +145,13 @@ _PUBLIC_ enum ndr_err_code ndr_pull_lsa_StringLarge(struct ndr_pull *ndr, int nd } if (r->string) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->string, r->size / 2)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->size / 2)); } if (r->string) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->string, r->length / 2)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, r->length / 2)); } } return NDR_ERR_SUCCESS; @@ -228,6 +236,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_lsa_Strings(struct ndr_pull *ndr, int ndr_fl } if (r->names) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->names, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -310,9 +320,13 @@ _PUBLIC_ enum ndr_err_code ndr_pull_lsa_AsciiString(struct ndr_pull *ndr, int nd } if (r->string) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->string, r->size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->size)); } if (r->string) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->string, r->length)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, r->length)); } } return NDR_ERR_SUCCESS; @@ -390,9 +404,13 @@ _PUBLIC_ enum ndr_err_code ndr_pull_lsa_AsciiStringLarge(struct ndr_pull *ndr, i } if (r->string) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->string, r->size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->size)); } if (r->string) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->string, r->length)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, r->length)); } } return NDR_ERR_SUCCESS; @@ -481,9 +499,13 @@ _PUBLIC_ enum ndr_err_code ndr_pull_lsa_BinaryString(struct ndr_pull *ndr, int n } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->size / 2)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->size / 2)); } if (r->array) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->array, r->length / 2)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, r->length / 2)); } } return NDR_ERR_SUCCESS; @@ -652,6 +674,8 @@ static enum ndr_err_code ndr_pull_lsa_PrivArray(struct ndr_pull *ndr, int ndr_fl } if (r->privs) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->privs, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -1116,6 +1140,8 @@ static enum ndr_err_code ndr_pull_lsa_AuditEventsInfo(struct ndr_pull *ndr, int } if (r->settings) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->settings, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -2066,6 +2092,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_lsa_SidArray(struct ndr_pull *ndr, int ndr_f } if (r->sids) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sids, r->num_sids)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_sids)); } } return NDR_ERR_SUCCESS; @@ -2155,6 +2183,8 @@ static enum ndr_err_code ndr_pull_lsa_DomainList(struct ndr_pull *ndr, int ndr_f } if (r->domains) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->domains, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -2315,6 +2345,8 @@ static enum ndr_err_code ndr_pull_lsa_TransSidArray(struct ndr_pull *ndr, int nd } if (r->sids) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sids, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -2409,6 +2441,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_lsa_RefDomainList(struct ndr_pull *ndr, int } if (r->domains) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->domains, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -2575,6 +2609,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_lsa_TransNameArray(struct ndr_pull *ndr, int } if (r->names) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->names, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -2682,6 +2718,8 @@ static enum ndr_err_code ndr_pull_lsa_PrivilegeSet(struct ndr_pull *ndr, int ndr NDR_PULL_SET_MEM_CTX(ndr, _mem_save_set_0, 0); if (r->set) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->set, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); } @@ -2772,9 +2810,13 @@ static enum ndr_err_code ndr_pull_lsa_DATA_BUF(struct ndr_pull *ndr, int ndr_fla } if (r->data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->size)); } if (r->data) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->data, r->length)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, r->length)); } } ndr->flags = _flags_save_STRUCT; @@ -2861,6 +2903,8 @@ static enum ndr_err_code ndr_pull_lsa_DATA_BUF2(struct ndr_pull *ndr, int ndr_fl } if (r->data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->size)); } } ndr->flags = _flags_save_STRUCT; @@ -3102,6 +3146,8 @@ static enum ndr_err_code ndr_pull_lsa_TrustDomainInfoControllers(struct ndr_pull } if (r->netbios_names) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->netbios_names, r->entries)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->entries)); } } return NDR_ERR_SUCCESS; @@ -3761,6 +3807,8 @@ static enum ndr_err_code ndr_pull_lsa_TrustDomainInfoInfoEx2Internal(struct ndr_ } if (r->forest_trust_data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->forest_trust_data, r->forest_trust_length)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->forest_trust_length)); } } return NDR_ERR_SUCCESS; @@ -4301,6 +4349,8 @@ static enum ndr_err_code ndr_pull_lsa_RightSet(struct ndr_pull *ndr, int ndr_fla } if (r->names) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->names, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -4390,6 +4440,8 @@ static enum ndr_err_code ndr_pull_lsa_DomainListEx(struct ndr_pull *ndr, int ndr } if (r->domains) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->domains, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -4535,6 +4587,8 @@ static enum ndr_err_code ndr_pull_lsa_DomainInfoEfs(struct ndr_pull *ndr, int nd } if (r->efs_blob) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->efs_blob, r->blob_size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->blob_size)); } } return NDR_ERR_SUCCESS; @@ -4766,6 +4820,8 @@ static enum ndr_err_code ndr_pull_lsa_TransNameArray2(struct ndr_pull *ndr, int } if (r->names) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->names, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -4946,6 +5002,8 @@ static enum ndr_err_code ndr_pull_lsa_TransSidArray2(struct ndr_pull *ndr, int n } if (r->sids) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sids, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -5103,6 +5161,8 @@ static enum ndr_err_code ndr_pull_lsa_TransSidArray3(struct ndr_pull *ndr, int n } if (r->sids) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sids, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -5179,6 +5239,8 @@ static enum ndr_err_code ndr_pull_lsa_ForestTrustBinaryData(struct ndr_pull *ndr } if (r->data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->length)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->length)); } } return NDR_ERR_SUCCESS; @@ -5551,6 +5613,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_lsa_ForestTrustInformation(struct ndr_pull * } if (r->entries) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->entries, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -5879,6 +5943,8 @@ static enum ndr_err_code ndr_pull_lsa_ForestTrustCollisionInfo(struct ndr_pull * } if (r->entries) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->entries, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -7274,6 +7340,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_lsa_LookupNames(struct ndr_pull *ndr, int fl *r->out.count = *r->in.count; if (r->in.names) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.names, r->in.num_names)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.num_names)); } } if (flags & NDR_OUT) { @@ -12049,6 +12117,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_lsa_LookupNames2(struct ndr_pull *ndr, int f *r->out.count = *r->in.count; if (r->in.names) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.names, r->in.num_names)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.num_names)); } } if (flags & NDR_OUT) { @@ -12731,6 +12801,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_lsa_LookupNames3(struct ndr_pull *ndr, int f *r->out.count = *r->in.count; if (r->in.names) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.names, r->in.num_names)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.num_names)); } } if (flags & NDR_OUT) { @@ -13589,6 +13661,8 @@ static enum ndr_err_code ndr_pull_lsa_LookupNames4(struct ndr_pull *ndr, int fla *r->out.count = *r->in.count; if (r->in.names) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.names, r->in.num_names)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.num_names)); } } if (flags & NDR_OUT) { diff --git a/bin/default/librpc/gen_ndr/ndr_mgmt.c b/bin/default/librpc/gen_ndr/ndr_mgmt.c index 54a2e13..07e49e8 100644 --- a/bin/default/librpc/gen_ndr/ndr_mgmt.c +++ b/bin/default/librpc/gen_ndr/ndr_mgmt.c @@ -101,6 +101,8 @@ static enum ndr_err_code ndr_pull_rpc_if_id_vector_t(struct ndr_pull *ndr, int n NDR_PULL_SET_MEM_CTX(ndr, _mem_save_if_id_0, 0); if (r->if_id) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->if_id, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); } @@ -170,6 +172,8 @@ static enum ndr_err_code ndr_pull_mgmt_statistics(struct ndr_pull *ndr, int ndr_ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_statistics_0, 0); if (r->statistics) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->statistics, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); } @@ -498,6 +502,8 @@ static enum ndr_err_code ndr_pull_mgmt_inq_princ_name(struct ndr_pull *ndr, int NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.princ_name) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.princ_name, r->in.princ_name_size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.princ_name_size)); } } return NDR_ERR_SUCCESS; diff --git a/bin/default/librpc/gen_ndr/ndr_netlogon.c b/bin/default/librpc/gen_ndr/ndr_netlogon.c index dce0ef1..0715fb3 100644 --- a/bin/default/librpc/gen_ndr/ndr_netlogon.c +++ b/bin/default/librpc/gen_ndr/ndr_netlogon.c @@ -509,9 +509,13 @@ static enum ndr_err_code ndr_pull_netr_ChallengeResponse(struct ndr_pull *ndr, i } if (r->data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->length)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->length)); } if (r->data) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->data, r->length)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, r->length)); } } ndr->flags = _flags_save_STRUCT; @@ -670,6 +674,8 @@ static enum ndr_err_code ndr_pull_netr_GenericInfo(struct ndr_pull *ndr, int ndr } if (r->data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->length)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->length)); } } ndr->flags = _flags_save_STRUCT; @@ -1519,6 +1525,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_netr_SamInfo3(struct ndr_pull *ndr, int ndr_ } if (r->sids) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sids, r->sidcount)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->sidcount)); } } return NDR_ERR_SUCCESS; @@ -1631,6 +1639,8 @@ static enum ndr_err_code ndr_pull_netr_SamInfo6(struct ndr_pull *ndr, int ndr_fl NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->principle)); if (r->sids) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sids, r->sidcount)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->sidcount)); } } return NDR_ERR_SUCCESS; @@ -1779,9 +1789,13 @@ static enum ndr_err_code ndr_pull_netr_PacInfo(struct ndr_pull *ndr, int ndr_fla NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4)); if (r->pac) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->pac, r->pac_size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->pac_size)); } if (r->auth) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->auth, r->auth_size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->auth_size)); } } return NDR_ERR_SUCCESS; @@ -1879,6 +1893,8 @@ static enum ndr_err_code ndr_pull_netr_GenericInfo2(struct ndr_pull *ndr, int nd } if (r->data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->length)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->length)); } } ndr->flags = _flags_save_STRUCT; @@ -2649,6 +2665,8 @@ static enum ndr_err_code ndr_pull_netr_USER_PRIVATE_INFO(struct ndr_pull *ndr, i } if (r->SensitiveData) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->SensitiveData, r->DataLength)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->DataLength)); } } return NDR_ERR_SUCCESS; @@ -3208,9 +3226,13 @@ static enum ndr_err_code ndr_pull_netr_DELTA_GROUP_MEMBER(struct ndr_pull *ndr, } if (r->rids) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->rids, r->num_rids)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_rids)); } if (r->attribs) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->attribs, r->num_rids)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_rids)); } } return NDR_ERR_SUCCESS; @@ -3553,6 +3575,8 @@ static enum ndr_err_code ndr_pull_netr_DELTA_POLICY(struct ndr_pull *ndr, int nd NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4)); if (r->eventauditoptions) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->eventauditoptions, r->maxauditeventcount + 1)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->maxauditeventcount + 1)); } } return NDR_ERR_SUCCESS; @@ -3699,6 +3723,8 @@ static enum ndr_err_code ndr_pull_netr_DELTA_TRUSTED_DOMAIN(struct ndr_pull *ndr NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4)); if (r->controller_names) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->controller_names, r->num_controllers)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_controllers)); } } return NDR_ERR_SUCCESS; @@ -3868,9 +3894,13 @@ static enum ndr_err_code ndr_pull_netr_DELTA_ACCOUNT(struct ndr_pull *ndr, int n NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4)); if (r->privilege_attrib) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->privilege_attrib, r->privilege_entries)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->privilege_entries)); } if (r->privilege_name) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->privilege_name, r->privilege_entries)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->privilege_entries)); } } return NDR_ERR_SUCCESS; @@ -3979,9 +4009,13 @@ static enum ndr_err_code ndr_pull_netr_CIPHER_VALUE(struct ndr_pull *ndr, int nd } if (r->cipher_data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->cipher_data, r->maxlen)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->maxlen)); } if (r->cipher_data) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->cipher_data, r->len)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, r->len)); } } return NDR_ERR_SUCCESS; @@ -5654,6 +5688,8 @@ static enum ndr_err_code ndr_pull_netr_DELTA_ENUM_ARRAY(struct ndr_pull *ndr, in } if (r->delta_enum) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->delta_enum, r->num_deltas)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_deltas)); } } return NDR_ERR_SUCCESS; @@ -7053,6 +7089,8 @@ static enum ndr_err_code ndr_pull_netr_Blob(struct ndr_pull *ndr, int ndr_flags, } if (r->data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->length)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->length)); } } return NDR_ERR_SUCCESS; @@ -7677,6 +7715,8 @@ static enum ndr_err_code ndr_pull_netr_LsaPolicyInformation(struct ndr_pull *ndr } if (r->policy) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->policy, r->policy_size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->policy_size)); } } return NDR_ERR_SUCCESS; @@ -8662,6 +8702,8 @@ static enum ndr_err_code ndr_pull_netr_DomainInformation(struct ndr_pull *ndr, i NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_BUFFERS, &r->dummy_string4)); if (r->trusted_domains) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->trusted_domains, r->trusted_domain_count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->trusted_domain_count)); } } return NDR_ERR_SUCCESS; @@ -8957,6 +8999,8 @@ static enum ndr_err_code ndr_pull_netr_DsRAddressToSitenamesWCtr(struct ndr_pull } if (r->sitename) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sitename, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -9030,6 +9074,8 @@ static enum ndr_err_code ndr_pull_netr_DsRAddress(struct ndr_pull *ndr, int ndr_ } if (r->buffer) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->buffer, r->size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->size)); } } return NDR_ERR_SUCCESS; @@ -9313,6 +9359,8 @@ static enum ndr_err_code ndr_pull_netr_DomainTrustList(struct ndr_pull *ndr, int } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -9441,9 +9489,13 @@ static enum ndr_err_code ndr_pull_netr_DsRAddressToSitenamesExWCtr(struct ndr_pu } if (r->sitename) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sitename, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } if (r->subnetname) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->subnetname, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -9545,6 +9597,8 @@ static enum ndr_err_code ndr_pull_DcSitesCtr(struct ndr_pull *ndr, int ndr_flags } if (r->sites) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sites, r->num_sites)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_sites)); } } return NDR_ERR_SUCCESS; @@ -9669,9 +9723,13 @@ static enum ndr_err_code ndr_pull_netr_TrustInfo(struct ndr_pull *ndr, int ndr_f } if (r->data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } if (r->entries) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->entries, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -9924,6 +9982,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_NL_DNS_NAME_INFO_ARRAY(struct ndr_pull *ndr, } if (r->names) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->names, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -15469,6 +15529,8 @@ static enum ndr_err_code ndr_pull_netr_DsRAddressToSitenamesW(struct ndr_pull *n ZERO_STRUCTP(r->out.ctr); if (r->in.addresses) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.addresses, r->in.count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.count)); } } if (flags & NDR_OUT) { @@ -16046,6 +16108,8 @@ static enum ndr_err_code ndr_pull_netr_DsRAddressToSitenamesExW(struct ndr_pull ZERO_STRUCTP(r->out.ctr); if (r->in.addresses) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.addresses, r->in.count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.count)); } } if (flags & NDR_OUT) { diff --git a/bin/default/librpc/gen_ndr/ndr_ntsvcs.c b/bin/default/librpc/gen_ndr/ndr_ntsvcs.c index 7c3c530..768257c 100644 --- a/bin/default/librpc/gen_ndr/ndr_ntsvcs.c +++ b/bin/default/librpc/gen_ndr/ndr_ntsvcs.c @@ -687,9 +687,13 @@ static enum ndr_err_code ndr_pull_PNP_GetDeviceList(struct ndr_pull *ndr, int fl NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.buffer) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, *r->out.length)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->out.length)); } if (r->out.buffer) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.buffer, *r->out.length)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, *r->out.length)); } } return NDR_ERR_SUCCESS; @@ -1031,9 +1035,13 @@ static enum ndr_err_code ndr_pull_PNP_GetDeviceRegProp(struct ndr_pull *ndr, int NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.buffer) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, *r->out.buffer_size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->out.buffer_size)); } if (r->out.buffer) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.buffer, *r->out.buffer_size)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, *r->out.buffer_size)); } } return NDR_ERR_SUCCESS; diff --git a/bin/default/librpc/gen_ndr/ndr_orpc.c b/bin/default/librpc/gen_ndr/ndr_orpc.c index 47bec05..693b26a 100644 --- a/bin/default/librpc/gen_ndr/ndr_orpc.c +++ b/bin/default/librpc/gen_ndr/ndr_orpc.c @@ -72,6 +72,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_ORPC_EXTENT(struct ndr_pull *ndr, int ndr_fl NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, size_data_0)); if (r->data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, ((r->size + 7) & ~7))); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, ((r->size + 7) & ~7))); } NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); } @@ -169,6 +171,8 @@ static enum ndr_err_code ndr_pull_ORPC_EXTENT_ARRAY(struct ndr_pull *ndr, int nd } if (r->extent) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->extent, ((r->size + 1) & ~1))); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, ((r->size + 1) & ~1))); } } return NDR_ERR_SUCCESS; diff --git a/bin/default/librpc/gen_ndr/ndr_oxidresolver.c b/bin/default/librpc/gen_ndr/ndr_oxidresolver.c index 80dd24d..4a8915c 100644 --- a/bin/default/librpc/gen_ndr/ndr_oxidresolver.c +++ b/bin/default/librpc/gen_ndr/ndr_oxidresolver.c @@ -109,6 +109,8 @@ static enum ndr_err_code ndr_pull_ResolveOxid(struct ndr_pull *ndr, int flags, s ZERO_STRUCTP(r->out.pAuthnHint); if (r->in.arRequestedProtseqs) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.arRequestedProtseqs, r->in.cRequestedProtseqs)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.cRequestedProtseqs)); } } if (flags & NDR_OUT) { @@ -341,9 +343,13 @@ static enum ndr_err_code ndr_pull_ComplexPing(struct ndr_pull *ndr, int flags, s ZERO_STRUCTP(r->out.PingBackoffFactor); if (r->in.AddToSet) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.AddToSet, r->in.cAddToSet)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.cAddToSet)); } if (r->in.DelFromSet) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.DelFromSet, r->in.cDelFromSet)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.cDelFromSet)); } } if (flags & NDR_OUT) { @@ -534,6 +540,8 @@ static enum ndr_err_code ndr_pull_ResolveOxid2(struct ndr_pull *ndr, int flags, ZERO_STRUCTP(r->out.ComVersion); if (r->in.arRequestedProtseqs) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.arRequestedProtseqs, r->in.cRequestedProtseqs)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.cRequestedProtseqs)); } } if (flags & NDR_OUT) { diff --git a/bin/default/librpc/gen_ndr/ndr_printcap.c b/bin/default/librpc/gen_ndr/ndr_printcap.c index 4a08f00..dedef05 100644 --- a/bin/default/librpc/gen_ndr/ndr_printcap.c +++ b/bin/default/librpc/gen_ndr/ndr_printcap.c @@ -189,6 +189,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_pcap_data(struct ndr_pull *ndr, int ndr_flag NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printers_0, 0); if (r->printers) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->printers, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); } diff --git a/bin/default/librpc/gen_ndr/ndr_remact.c b/bin/default/librpc/gen_ndr/ndr_remact.c index 8b9bdb2..24ec267 100644 --- a/bin/default/librpc/gen_ndr/ndr_remact.c +++ b/bin/default/librpc/gen_ndr/ndr_remact.c @@ -179,9 +179,13 @@ static enum ndr_err_code ndr_pull_RemoteActivation(struct ndr_pull *ndr, int fla ZERO_STRUCTP(r->out.hr); if (r->in.pIIDs) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.pIIDs, r->in.Interfaces)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.Interfaces)); } if (r->in.protseq) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.protseq, r->in.num_protseqs)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.num_protseqs)); } } if (flags & NDR_OUT) { @@ -263,9 +267,13 @@ static enum ndr_err_code ndr_pull_RemoteActivation(struct ndr_pull *ndr, int fla NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.ifaces) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.ifaces, r->in.Interfaces)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.Interfaces)); } if (r->out.results) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.results, r->in.Interfaces)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.Interfaces)); } } return NDR_ERR_SUCCESS; diff --git a/bin/default/librpc/gen_ndr/ndr_samr.c b/bin/default/librpc/gen_ndr/ndr_samr.c index c8c95ac..2cf05e2 100644 --- a/bin/default/librpc/gen_ndr/ndr_samr.c +++ b/bin/default/librpc/gen_ndr/ndr_samr.c @@ -295,6 +295,8 @@ static enum ndr_err_code ndr_pull_samr_SamArray(struct ndr_pull *ndr, int ndr_fl } if (r->entries) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->entries, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -1283,6 +1285,8 @@ static enum ndr_err_code ndr_pull_samr_Ids(struct ndr_pull *ndr, int ndr_flags, } if (r->ids) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->ids, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -1697,9 +1701,13 @@ static enum ndr_err_code ndr_pull_samr_RidAttrArray(struct ndr_pull *ndr, int nd } if (r->rids) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->rids, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } if (r->attributes) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->attributes, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -2142,9 +2150,13 @@ _PUBLIC_ enum ndr_err_code ndr_pull_samr_LogonHours(struct ndr_pull *ndr, int nd } if (r->bits) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->bits, 1260)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, 1260)); } if (r->bits) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->bits, r->units_per_week / 8)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, r->units_per_week / 8)); } } ndr->flags = _flags_save_STRUCT; @@ -3152,6 +3164,8 @@ static enum ndr_err_code ndr_pull_samr_UserInfo21(struct ndr_pull *ndr, int ndr_ NDR_CHECK(ndr_pull_samr_LogonHours(ndr, NDR_BUFFERS, &r->logon_hours)); if (r->buffer) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->buffer, r->buf_count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->buf_count)); } } return NDR_ERR_SUCCESS; @@ -4068,6 +4082,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_samr_RidWithAttributeArray(struct ndr_pull * } if (r->rids) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->rids, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -4213,6 +4229,8 @@ static enum ndr_err_code ndr_pull_samr_DispInfoGeneral(struct ndr_pull *ndr, int } if (r->entries) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->entries, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -4353,6 +4371,8 @@ static enum ndr_err_code ndr_pull_samr_DispInfoFull(struct ndr_pull *ndr, int nd } if (r->entries) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->entries, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -4493,6 +4513,8 @@ static enum ndr_err_code ndr_pull_samr_DispInfoFullGroups(struct ndr_pull *ndr, } if (r->entries) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->entries, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -4622,6 +4644,8 @@ static enum ndr_err_code ndr_pull_samr_DispInfoAscii(struct ndr_pull *ndr, int n } if (r->entries) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->entries, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -5196,6 +5220,8 @@ static enum ndr_err_code ndr_pull_samr_ValidationBlob(struct ndr_pull *ndr, int } if (r->data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->length)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->length)); } } return NDR_ERR_SUCCESS; @@ -5289,6 +5315,8 @@ static enum ndr_err_code ndr_pull_samr_ValidatePasswordInfo(struct ndr_pull *ndr } if (r->pwd_history) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->pwd_history, r->pwd_history_len)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->pwd_history_len)); } } return NDR_ERR_SUCCESS; @@ -7724,9 +7752,13 @@ _PUBLIC_ enum ndr_err_code ndr_pull_samr_LookupNames(struct ndr_pull *ndr, int f ZERO_STRUCTP(r->out.types); if (r->in.names) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.names, 1000)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, 1000)); } if (r->in.names) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->in.names, r->in.num_names)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, r->in.num_names)); } } if (flags & NDR_OUT) { @@ -7866,9 +7898,13 @@ static enum ndr_err_code ndr_pull_samr_LookupRids(struct ndr_pull *ndr, int flag ZERO_STRUCTP(r->out.types); if (r->in.rids) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.rids, 1000)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, 1000)); } if (r->in.rids) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->in.rids, r->in.num_rids)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, r->in.num_rids)); } } if (flags & NDR_OUT) { diff --git a/bin/default/librpc/gen_ndr/ndr_security.c b/bin/default/librpc/gen_ndr/ndr_security.c index 769be0d..8e35b2d 100644 --- a/bin/default/librpc/gen_ndr/ndr_security.c +++ b/bin/default/librpc/gen_ndr/ndr_security.c @@ -1009,6 +1009,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_security_token(struct ndr_pull *ndr, int ndr NDR_CHECK(ndr_pull_lsa_SystemAccessModeFlags(ndr, NDR_SCALARS, &r->rights_mask)); if (r->sids) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sids, r->num_sids)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_sids)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); } @@ -1077,6 +1079,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_security_unix_token(struct ndr_pull *ndr, in NDR_PULL_SET_MEM_CTX(ndr, _mem_save_groups_0, 0); if (r->groups) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->groups, r->ngroups)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->ngroups)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); } diff --git a/bin/default/librpc/gen_ndr/ndr_spoolss.c b/bin/default/librpc/gen_ndr/ndr_spoolss.c index 7d82a96..ee59522 100644 --- a/bin/default/librpc/gen_ndr/ndr_spoolss.c +++ b/bin/default/librpc/gen_ndr/ndr_spoolss.c @@ -19957,6 +19957,8 @@ static enum ndr_err_code ndr_pull_spoolss_PortVarContainer(struct ndr_pull *ndr, } if (r->monitor_data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->monitor_data, r->monitor_data_size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->monitor_data_size)); } } return NDR_ERR_SUCCESS; @@ -20243,6 +20245,8 @@ static enum ndr_err_code ndr_pull_spoolss_NotifyOptionType(struct ndr_pull *ndr, } if (r->fields) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->fields, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -20363,6 +20367,8 @@ static enum ndr_err_code ndr_pull_spoolss_NotifyOption(struct ndr_pull *ndr, int } if (r->types) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->types, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -20437,6 +20443,8 @@ static enum ndr_err_code ndr_pull_spoolss_NotifyString(struct ndr_pull *ndr, int } if (r->string) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->string, r->size / 2)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->size / 2)); } } return NDR_ERR_SUCCESS; @@ -20758,6 +20766,8 @@ static enum ndr_err_code ndr_pull_spoolss_NotifyInfo(struct ndr_pull *ndr, int n NDR_PULL_SET_MEM_CTX(ndr, _mem_save_notifies_0, 0); if (r->notifies) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->notifies, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); } @@ -25259,6 +25269,8 @@ static enum ndr_err_code ndr_pull_spoolss_ReadPrinter(struct ndr_pull *ndr, int NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.data, r->in.data_size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.data_size)); } } return NDR_ERR_SUCCESS; @@ -25429,6 +25441,8 @@ static enum ndr_err_code ndr_pull_spoolss_AddJob(struct ndr_pull *ndr, int flags ZERO_STRUCTP(r->out.needed); if (r->in.buffer) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.buffer, r->in.offered)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.offered)); } } if (flags & NDR_OUT) { @@ -25457,6 +25471,8 @@ static enum ndr_err_code ndr_pull_spoolss_AddJob(struct ndr_pull *ndr, int flags NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.buffer) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.offered)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.offered)); } } return NDR_ERR_SUCCESS; @@ -25662,6 +25678,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_GetPrinterData(struct ndr_pull *ndr, NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.data, r->in.offered)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.offered)); } } return NDR_ERR_SUCCESS; @@ -25767,6 +25785,8 @@ static enum ndr_err_code ndr_pull_spoolss_SetPrinterData(struct ndr_pull *ndr, i NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered)); if (r->in.data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.data, r->in.offered)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.offered)); } } if (flags & NDR_OUT) { @@ -28693,6 +28713,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_ReplyOpenPrinter(struct ndr_pull *nd ZERO_STRUCTP(r->out.handle); if (r->in.buffer) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.buffer, r->in.bufsize)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.bufsize)); } } if (flags & NDR_OUT) { @@ -28803,6 +28825,8 @@ static enum ndr_err_code ndr_pull_spoolss_RouterReplyPrinter(struct ndr_pull *nd } if (r->in.buffer) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.buffer, r->in.bufsize)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.bufsize)); } } if (flags & NDR_OUT) { @@ -30167,9 +30191,13 @@ static enum ndr_err_code ndr_pull_spoolss_EnumPrinterData(struct ndr_pull *ndr, NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.value_name) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.value_name, r->in.value_offered / 2)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.value_offered / 2)); } if (r->out.data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.data, r->in.data_offered)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.data_offered)); } } return NDR_ERR_SUCCESS; @@ -30504,6 +30532,8 @@ static enum ndr_err_code ndr_pull_spoolss_SetPrinterDataEx(struct ndr_pull *ndr, NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered)); if (r->in.data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.data, r->in.offered)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.offered)); } } if (flags & NDR_OUT) { @@ -30654,6 +30684,8 @@ static enum ndr_err_code ndr_pull_spoolss_GetPrinterDataEx(struct ndr_pull *ndr, NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.data, r->in.offered)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.offered)); } } return NDR_ERR_SUCCESS; @@ -31760,6 +31792,8 @@ static enum ndr_err_code ndr_pull_spoolss_XcvData(struct ndr_pull *ndr, int flag NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.out_data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.out_data, r->in.out_data_size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.out_data_size)); } } return NDR_ERR_SUCCESS; @@ -32533,6 +32567,8 @@ static enum ndr_err_code ndr_pull_spoolss_GetCorePrinterDrivers(struct ndr_pull memset(r->out.core_printer_drivers, 0, (r->in.core_printer_driver_count) * sizeof(*r->out.core_printer_drivers)); if (r->in.core_driver_dependencies) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.core_driver_dependencies, r->in.core_driver_size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.core_driver_size)); } } if (flags & NDR_OUT) { @@ -32550,6 +32586,8 @@ static enum ndr_err_code ndr_pull_spoolss_GetCorePrinterDrivers(struct ndr_pull NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.core_printer_drivers) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.core_printer_drivers, r->in.core_printer_driver_count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.core_printer_driver_count)); } } return NDR_ERR_SUCCESS; @@ -32800,6 +32838,8 @@ static enum ndr_err_code ndr_pull_spoolss_GetPrinterDriverPackagePath(struct ndr ZERO_STRUCTP(r->out.required); if (r->in.driver_package_cab) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.driver_package_cab, r->in.driver_package_cab_size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.driver_package_cab_size)); } } if (flags & NDR_OUT) { @@ -32827,6 +32867,8 @@ static enum ndr_err_code ndr_pull_spoolss_GetPrinterDriverPackagePath(struct ndr NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.driver_package_cab) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.driver_package_cab, r->in.driver_package_cab_size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.driver_package_cab_size)); } } return NDR_ERR_SUCCESS; diff --git a/bin/default/librpc/gen_ndr/ndr_srvsvc.c b/bin/default/librpc/gen_ndr/ndr_srvsvc.c index 7a0f98e..fd9039c 100644 --- a/bin/default/librpc/gen_ndr/ndr_srvsvc.c +++ b/bin/default/librpc/gen_ndr/ndr_srvsvc.c @@ -138,6 +138,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetCharDevCtr0(struct ndr_pull *ndr, in } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -339,6 +341,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetCharDevCtr1(struct ndr_pull *ndr, in } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -828,6 +832,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetCharDevQCtr0(struct ndr_pull *ndr, i } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -1032,6 +1038,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetCharDevQCtr1(struct ndr_pull *ndr, i } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -1481,6 +1489,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetConnCtr0(struct ndr_pull *ndr, int n } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -1691,6 +1701,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetConnCtr1(struct ndr_pull *ndr, int n } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -1996,6 +2008,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetFileCtr2(struct ndr_pull *ndr, int n } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -2200,6 +2214,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetFileCtr3(struct ndr_pull *ndr, int n } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -2689,6 +2705,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetSessCtr0(struct ndr_pull *ndr, int n } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -2896,6 +2914,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetSessCtr1(struct ndr_pull *ndr, int n } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -3140,6 +3160,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetSessCtr2(struct ndr_pull *ndr, int n } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -3341,6 +3363,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetSessCtr10(struct ndr_pull *ndr, int } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -3622,6 +3646,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetSessCtr502(struct ndr_pull *ndr, int } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -4134,6 +4160,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetShareCtr0(struct ndr_pull *ndr, int } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -4332,6 +4360,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetShareCtr1(struct ndr_pull *ndr, int } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -4613,6 +4643,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetShareCtr2(struct ndr_pull *ndr, int } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -4814,6 +4846,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetShareCtr501(struct ndr_pull *ndr, in } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -5100,6 +5134,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetShareCtr502(struct ndr_pull *ndr, in } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -5258,6 +5294,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetShareCtr1004(struct ndr_pull *ndr, i } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -5399,6 +5437,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetShareCtr1005(struct ndr_pull *ndr, i } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -5517,6 +5557,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetShareCtr1006(struct ndr_pull *ndr, i } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -5678,6 +5720,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetShareCtr1007(struct ndr_pull *ndr, i } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -5767,6 +5811,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetShareCtr1501(struct ndr_pull *ndr, i } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -12439,9 +12485,13 @@ static enum ndr_err_code ndr_pull_srvsvc_NetDiskInfo(struct ndr_pull *ndr, int n } if (r->disks) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->disks, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } if (r->disks) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->disks, r->count)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -12662,6 +12712,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetTransportInfo0(struct ndr_pull *ndr, } if (r->addr) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->addr, r->addr_len)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->addr_len)); } } return NDR_ERR_SUCCESS; @@ -12758,6 +12810,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetTransportCtr0(struct ndr_pull *ndr, } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -12926,6 +12980,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetTransportInfo1(struct ndr_pull *ndr, } if (r->addr) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->addr, r->addr_len)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->addr_len)); } } return NDR_ERR_SUCCESS; @@ -13028,6 +13084,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetTransportCtr1(struct ndr_pull *ndr, } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -13198,6 +13256,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetTransportInfo2(struct ndr_pull *ndr, } if (r->addr) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->addr, r->addr_len)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->addr_len)); } } return NDR_ERR_SUCCESS; @@ -13301,6 +13361,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetTransportCtr2(struct ndr_pull *ndr, } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -13477,6 +13539,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetTransportInfo3(struct ndr_pull *ndr, } if (r->addr) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->addr, r->addr_len)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->addr_len)); } } return NDR_ERR_SUCCESS; @@ -13582,6 +13646,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetTransportCtr3(struct ndr_pull *ndr, } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -18702,6 +18768,8 @@ static enum ndr_err_code ndr_pull_srvsvc_NetPathCanonicalize(struct ndr_pull *nd NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.can_path) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.can_path, r->in.maxbuf)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.maxbuf)); } } return NDR_ERR_SUCCESS; diff --git a/bin/default/librpc/gen_ndr/ndr_svcctl.c b/bin/default/librpc/gen_ndr/ndr_svcctl.c index cb115fb..da580c4 100644 --- a/bin/default/librpc/gen_ndr/ndr_svcctl.c +++ b/bin/default/librpc/gen_ndr/ndr_svcctl.c @@ -1383,6 +1383,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_FAILURE_ACTIONS(struct ndr_pull *ndr } if (r->actions) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->actions, r->num_actions)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_actions)); } } return NDR_ERR_SUCCESS; @@ -1825,6 +1827,8 @@ static enum ndr_err_code ndr_pull_svcctl_QueryServiceObjectSecurity(struct ndr_p NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.buffer) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.offered)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.offered)); } } return NDR_ERR_SUCCESS; @@ -1911,6 +1915,8 @@ static enum ndr_err_code ndr_pull_svcctl_SetServiceObjectSecurity(struct ndr_pul NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered)); if (r->in.buffer) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.buffer, r->in.offered)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.offered)); } } if (flags & NDR_OUT) { @@ -2819,9 +2825,13 @@ static enum ndr_err_code ndr_pull_svcctl_CreateServiceW(struct ndr_pull *ndr, in ZERO_STRUCTP(r->out.handle); if (r->in.dependencies) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.dependencies, r->in.dependencies_size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.dependencies_size)); } if (r->in.password) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.password, r->in.password_size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.password_size)); } } if (flags & NDR_OUT) { @@ -3018,6 +3028,8 @@ static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesW(struct ndr_pull NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.service_status) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service_status, r->in.offered)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.offered)); } } return NDR_ERR_SUCCESS; @@ -3188,6 +3200,8 @@ static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusW(struct ndr_pull *nd NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.service) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.offered)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.offered)); } } return NDR_ERR_SUCCESS; @@ -3767,6 +3781,8 @@ static enum ndr_err_code ndr_pull_svcctl_StartServiceW(struct ndr_pull *ndr, int } if (r->in.Arguments) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.Arguments, r->in.NumArgs)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.NumArgs)); } } if (flags & NDR_OUT) { @@ -5182,6 +5198,8 @@ static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusA(struct ndr_pull *nd NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.service) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.offered)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.offered)); } } return NDR_ERR_SUCCESS; @@ -6588,6 +6606,8 @@ static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfig2W(struct ndr_pull *n NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.buffer) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.offered)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.offered)); } } return NDR_ERR_SUCCESS; @@ -6701,6 +6721,8 @@ static enum ndr_err_code ndr_pull_svcctl_QueryServiceStatusEx(struct ndr_pull *n NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.buffer) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.offered)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.offered)); } } return NDR_ERR_SUCCESS; @@ -7120,6 +7142,8 @@ static enum ndr_err_code ndr_pull_EnumServicesStatusExW(struct ndr_pull *ndr, in NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.services) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.services, r->in.offered)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.offered)); } } return NDR_ERR_SUCCESS; diff --git a/bin/default/librpc/gen_ndr/ndr_unixinfo.c b/bin/default/librpc/gen_ndr/ndr_unixinfo.c index 9da095c..a8ee95a 100644 --- a/bin/default/librpc/gen_ndr/ndr_unixinfo.c +++ b/bin/default/librpc/gen_ndr/ndr_unixinfo.c @@ -404,6 +404,8 @@ static enum ndr_err_code ndr_pull_unixinfo_GetPWUid(struct ndr_pull *ndr, int fl *r->out.count = *r->in.count; if (r->in.uids) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.uids, *r->in.count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->in.count)); } } if (flags & NDR_OUT) { @@ -429,6 +431,8 @@ static enum ndr_err_code ndr_pull_unixinfo_GetPWUid(struct ndr_pull *ndr, int fl NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result)); if (r->out.infos) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.infos, *r->out.count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->out.count)); } } return NDR_ERR_SUCCESS; diff --git a/bin/default/librpc/gen_ndr/ndr_winreg.c b/bin/default/librpc/gen_ndr/ndr_winreg.c index f1362f5..75d50b2 100644 --- a/bin/default/librpc/gen_ndr/ndr_winreg.c +++ b/bin/default/librpc/gen_ndr/ndr_winreg.c @@ -167,9 +167,13 @@ static enum ndr_err_code ndr_pull_KeySecurityData(struct ndr_pull *ndr, int ndr_ } if (r->data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->size)); } if (r->data) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->data, r->len)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, r->len)); } } return NDR_ERR_SUCCESS; @@ -341,9 +345,13 @@ static enum ndr_err_code ndr_pull_winreg_StringBuf(struct ndr_pull *ndr, int ndr } if (r->name) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->name, r->size / 2)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->size / 2)); } if (r->name) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->name, r->length / 2)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, r->length / 2)); } } return NDR_ERR_SUCCESS; @@ -421,9 +429,13 @@ static enum ndr_err_code ndr_pull_winreg_ValNameBuf(struct ndr_pull *ndr, int nd } if (r->name) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->name, r->size / 2)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->size / 2)); } if (r->name) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->name, r->length / 2)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, r->length / 2)); } } return NDR_ERR_SUCCESS; @@ -1777,10 +1789,14 @@ _PUBLIC_ enum ndr_err_code ndr_pull_winreg_EnumValue(struct ndr_pull *ndr, int f if (r->in.value) { if (r->in.size == NULL) return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, "NULL Pointer for size_is()"); NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.value, r->in.size?*r->in.size:0)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.size?*r->in.size:0)); } if (r->in.value) { if (r->in.length == NULL) return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, "NULL Pointer for length_is()"); NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->in.value, r->in.length?*r->in.length:0)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, r->in.length?*r->in.length:0)); } } if (flags & NDR_OUT) { @@ -1857,10 +1873,14 @@ _PUBLIC_ enum ndr_err_code ndr_pull_winreg_EnumValue(struct ndr_pull *ndr, int f if (r->out.value) { if (r->out.size == NULL) return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, "NULL Pointer for size_is()"); NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.value, r->out.size?*r->out.size:0)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->out.size?*r->out.size:0)); } if (r->out.value) { if (r->out.length == NULL) return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, "NULL Pointer for length_is()"); NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.value, r->out.length?*r->out.length:0)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, r->out.length?*r->out.length:0)); } } return NDR_ERR_SUCCESS; @@ -2777,10 +2797,14 @@ _PUBLIC_ enum ndr_err_code ndr_pull_winreg_QueryValue(struct ndr_pull *ndr, int if (r->in.data) { if (r->in.data_size == NULL) return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, "NULL Pointer for size_is()"); NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.data, r->in.data_size?*r->in.data_size:0)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.data_size?*r->in.data_size:0)); } if (r->in.data) { if (r->in.data_length == NULL) return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, "NULL Pointer for length_is()"); NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->in.data, r->in.data_length?*r->in.data_length:0)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, r->in.data_length?*r->in.data_length:0)); } } if (flags & NDR_OUT) { @@ -2850,10 +2874,14 @@ _PUBLIC_ enum ndr_err_code ndr_pull_winreg_QueryValue(struct ndr_pull *ndr, int if (r->out.data) { if (r->out.data_size == NULL) return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, "NULL Pointer for size_is()"); NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.data, r->out.data_size?*r->out.data_size:0)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->out.data_size?*r->out.data_size:0)); } if (r->out.data) { if (r->out.data_length == NULL) return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, "NULL Pointer for length_is()"); NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.data, r->out.data_length?*r->out.data_length:0)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, r->out.data_length?*r->out.data_length:0)); } } return NDR_ERR_SUCCESS; @@ -3352,6 +3380,8 @@ static enum ndr_err_code ndr_pull_winreg_SetValue(struct ndr_pull *ndr, int flag NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.size)); if (r->in.data) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.data, r->in.size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.size)); } } if (flags & NDR_OUT) { @@ -4044,15 +4074,23 @@ _PUBLIC_ enum ndr_err_code ndr_pull_winreg_QueryMultipleValues(struct ndr_pull * *r->out.buffer_size = *r->in.buffer_size; if (r->in.values_in) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.values_in, r->in.num_values)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.num_values)); } if (r->in.values_in) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->in.values_in, r->in.num_values)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, r->in.num_values)); } if (r->in.buffer) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.buffer, *r->in.buffer_size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->in.buffer_size)); } if (r->in.buffer) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->in.buffer, *r->in.buffer_size)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, *r->in.buffer_size)); } } if (flags & NDR_OUT) { @@ -4105,15 +4143,23 @@ _PUBLIC_ enum ndr_err_code ndr_pull_winreg_QueryMultipleValues(struct ndr_pull * NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.values_out) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.values_out, r->in.num_values)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.num_values)); } if (r->out.values_out) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.values_out, r->in.num_values)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, r->in.num_values)); } if (r->out.buffer) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, *r->out.buffer_size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->out.buffer_size)); } if (r->out.buffer) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.buffer, *r->out.buffer_size)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, *r->out.buffer_size)); } } return NDR_ERR_SUCCESS; @@ -4720,15 +4766,23 @@ _PUBLIC_ enum ndr_err_code ndr_pull_winreg_QueryMultipleValues2(struct ndr_pull ZERO_STRUCTP(r->out.needed); if (r->in.values_in) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.values_in, r->in.num_values)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.num_values)); } if (r->in.values_in) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->in.values_in, r->in.num_values)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, r->in.num_values)); } if (r->in.buffer) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.buffer, *r->in.offered)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->in.offered)); } if (r->in.buffer) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->in.buffer, *r->in.offered)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, *r->in.offered)); } } if (flags & NDR_OUT) { @@ -4781,15 +4835,23 @@ _PUBLIC_ enum ndr_err_code ndr_pull_winreg_QueryMultipleValues2(struct ndr_pull NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.values_out) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.values_out, r->in.num_values)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.num_values)); } if (r->out.values_out) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.values_out, r->in.num_values)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, r->in.num_values)); } if (r->out.buffer) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, *r->in.offered)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->in.offered)); } if (r->out.buffer) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.buffer, *r->in.offered)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, *r->in.offered)); } } return NDR_ERR_SUCCESS; diff --git a/bin/default/librpc/gen_ndr/ndr_wkssvc.c b/bin/default/librpc/gen_ndr/ndr_wkssvc.c index db4bc01..66c1997 100644 --- a/bin/default/librpc/gen_ndr/ndr_wkssvc.c +++ b/bin/default/librpc/gen_ndr/ndr_wkssvc.c @@ -3286,6 +3286,8 @@ static enum ndr_err_code ndr_pull_wkssvc_NetWkstaEnumUsersCtr0(struct ndr_pull * } if (r->user0) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->user0, r->entries_read)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->entries_read)); } } return NDR_ERR_SUCCESS; @@ -3555,6 +3557,8 @@ static enum ndr_err_code ndr_pull_wkssvc_NetWkstaEnumUsersCtr1(struct ndr_pull * } if (r->user1) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->user1, r->entries_read)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->entries_read)); } } return NDR_ERR_SUCCESS; @@ -4188,6 +4192,8 @@ static enum ndr_err_code ndr_pull_wkssvc_NetWkstaTransportCtr0(struct ndr_pull * } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -5233,6 +5239,8 @@ static enum ndr_err_code ndr_pull_wkssvc_NetrUseEnumCtr2(struct ndr_pull *ndr, i } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -5322,6 +5330,8 @@ static enum ndr_err_code ndr_pull_wkssvc_NetrUseEnumCtr1(struct ndr_pull *ndr, i } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -5411,6 +5421,8 @@ static enum ndr_err_code ndr_pull_wkssvc_NetrUseEnumCtr0(struct ndr_pull *ndr, i } if (r->array) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -6062,6 +6074,8 @@ static enum ndr_err_code ndr_pull_wkssvc_ComputerNamesCtr(struct ndr_pull *ndr, } if (r->computer_name) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->computer_name, r->count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->count)); } } return NDR_ERR_SUCCESS; @@ -7906,6 +7920,8 @@ static enum ndr_err_code ndr_pull_wkssvc_NetrMessageBufferSend(struct ndr_pull * NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.message_size)); if (r->in.message_buffer) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.message_buffer, r->in.message_size)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.message_size)); } } if (flags & NDR_OUT) { @@ -9437,6 +9453,8 @@ static enum ndr_err_code ndr_pull_wkssvc_NetrGetJoinableOus(struct ndr_pull *ndr NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (*r->out.ous) { NDR_CHECK(ndr_check_array_size(ndr, (void*)r->out.ous, *r->out.num_ous)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->out.num_ous)); } } return NDR_ERR_SUCCESS; @@ -10434,6 +10452,8 @@ static enum ndr_err_code ndr_pull_wkssvc_NetrGetJoinableOus2(struct ndr_pull *nd NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (*r->out.ous) { NDR_CHECK(ndr_check_array_size(ndr, (void*)r->out.ous, *r->out.num_ous)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->out.num_ous)); } } return NDR_ERR_SUCCESS; diff --git a/bin/default/librpc/gen_ndr/ndr_wmi.c b/bin/default/librpc/gen_ndr/ndr_wmi.c index dee6d18..489672c 100644 --- a/bin/default/librpc/gen_ndr/ndr_wmi.c +++ b/bin/default/librpc/gen_ndr/ndr_wmi.c @@ -4167,9 +4167,13 @@ static enum ndr_err_code ndr_pull_IEnumWbemClassObject_Next(struct ndr_pull *ndr NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.apObjects) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.apObjects, r->in.uCount)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.uCount)); } if (r->out.apObjects) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.apObjects, *r->out.puReturned)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, *r->out.puReturned)); } } return NDR_ERR_SUCCESS; @@ -5580,9 +5584,13 @@ static enum ndr_err_code ndr_pull_RequestChallenge(struct ndr_pull *ndr, int fla NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.Nonce) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.Nonce, 16)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, 16)); } if (r->out.Nonce) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.Nonce, 16)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, 16)); } } return NDR_ERR_SUCCESS; @@ -5747,9 +5755,13 @@ static enum ndr_err_code ndr_pull_WBEMLogin(struct ndr_pull *ndr, int flags, str ZERO_STRUCTP(r->out.ppNamespace); if (r->in.AccessToken) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.AccessToken, 16)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, 16)); } if (r->in.AccessToken) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->in.AccessToken, 16)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, 16)); } } if (flags & NDR_OUT) { @@ -6247,6 +6259,8 @@ static enum ndr_err_code ndr_pull_IWbemWCOSmartEnum_Next(struct ndr_pull *ndr, i NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (*r->out.pData) { NDR_CHECK(ndr_check_array_size(ndr, (void*)r->out.pData, *r->out.pSize)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, *r->out.pSize)); } } return NDR_ERR_SUCCESS; @@ -7251,6 +7265,8 @@ static enum ndr_err_code ndr_pull_Indicate(struct ndr_pull *ndr, int flags, stru ZERO_STRUCTP(r->out.ORPCthat); if (r->in.apObjArray) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.apObjArray, r->in.lObjectCount)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.lObjectCount)); } } if (flags & NDR_OUT) { diff --git a/bin/default/librpc/gen_ndr/ndr_xattr.c b/bin/default/librpc/gen_ndr/ndr_xattr.c index d11d526..5d04a6a 100644 --- a/bin/default/librpc/gen_ndr/ndr_xattr.c +++ b/bin/default/librpc/gen_ndr/ndr_xattr.c @@ -517,6 +517,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_xattr_DosEAs(struct ndr_pull *ndr, int ndr_f } if (r->eas) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->eas, r->num_eas)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_eas)); } } return NDR_ERR_SUCCESS; @@ -711,6 +713,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_xattr_DosStreams(struct ndr_pull *ndr, int n } if (r->streams) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->streams, r->num_streams)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_streams)); } } return NDR_ERR_SUCCESS; diff --git a/bin/default/source3/librpc/gen_ndr/ndr_open_files.c b/bin/default/source3/librpc/gen_ndr/ndr_open_files.c index a13cabb..6f2b772 100644 --- a/bin/default/source3/librpc/gen_ndr/ndr_open_files.c +++ b/bin/default/source3/librpc/gen_ndr/ndr_open_files.c @@ -82,10 +82,14 @@ _PUBLIC_ enum ndr_err_code ndr_push_delete_token(struct ndr_push *ndr, int ndr_f if (ndr_flags & NDR_SCALARS) { NDR_CHECK(ndr_push_align(ndr, 5)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->name_hash)); + NDR_CHECK(ndr_push_unique_ptr(ndr, r->delete_nt_token)); NDR_CHECK(ndr_push_unique_ptr(ndr, r->delete_token)); NDR_CHECK(ndr_push_trailer_align(ndr, 5)); } if (ndr_flags & NDR_BUFFERS) { + if (r->delete_nt_token) { + NDR_CHECK(ndr_push_security_token(ndr, NDR_SCALARS, r->delete_nt_token)); + } if (r->delete_token) { NDR_CHECK(ndr_push_security_unix_token(ndr, NDR_SCALARS, r->delete_token)); } @@ -95,12 +99,20 @@ _PUBLIC_ enum ndr_err_code ndr_push_delete_token(struct ndr_push *ndr, int ndr_f _PUBLIC_ enum ndr_err_code ndr_pull_delete_token(struct ndr_pull *ndr, int ndr_flags, struct delete_token *r) { + uint32_t _ptr_delete_nt_token; + TALLOC_CTX *_mem_save_delete_nt_token_0; uint32_t _ptr_delete_token; TALLOC_CTX *_mem_save_delete_token_0; NDR_PULL_CHECK_FLAGS(ndr, ndr_flags); if (ndr_flags & NDR_SCALARS) { NDR_CHECK(ndr_pull_align(ndr, 5)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->name_hash)); + NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_delete_nt_token)); + if (_ptr_delete_nt_token) { + NDR_PULL_ALLOC(ndr, r->delete_nt_token); + } else { + r->delete_nt_token = NULL; + } NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_delete_token)); if (_ptr_delete_token) { NDR_PULL_ALLOC(ndr, r->delete_token); @@ -110,6 +122,12 @@ _PUBLIC_ enum ndr_err_code ndr_pull_delete_token(struct ndr_pull *ndr, int ndr_f NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); } if (ndr_flags & NDR_BUFFERS) { + if (r->delete_nt_token) { + _mem_save_delete_nt_token_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->delete_nt_token, 0); + NDR_CHECK(ndr_pull_security_token(ndr, NDR_SCALARS, r->delete_nt_token)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delete_nt_token_0, 0); + } if (r->delete_token) { _mem_save_delete_token_0 = NDR_PULL_GET_MEM_CTX(ndr); NDR_PULL_SET_MEM_CTX(ndr, r->delete_token, 0); @@ -126,6 +144,12 @@ _PUBLIC_ void ndr_print_delete_token(struct ndr_print *ndr, const char *name, co if (r == NULL) { ndr_print_null(ndr); return; } ndr->depth++; ndr_print_uint32(ndr, "name_hash", r->name_hash); + ndr_print_ptr(ndr, "delete_nt_token", r->delete_nt_token); + ndr->depth++; + if (r->delete_nt_token) { + ndr_print_security_token(ndr, "delete_nt_token", r->delete_nt_token); + } + ndr->depth--; ndr_print_ptr(ndr, "delete_token", r->delete_token); ndr->depth++; if (r->delete_token) { @@ -272,9 +296,13 @@ _PUBLIC_ enum ndr_err_code ndr_pull_share_mode_data(struct ndr_pull *ndr, int nd /* [ignore] 'record' */ if (r->share_modes) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->share_modes, r->num_share_modes)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_share_modes)); } if (r->delete_tokens) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->delete_tokens, r->num_delete_tokens)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_delete_tokens)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); } diff --git a/bin/default/source3/librpc/gen_ndr/ndr_wbint.c b/bin/default/source3/librpc/gen_ndr/ndr_wbint.c index 0d14459..d620c74 100644 --- a/bin/default/source3/librpc/gen_ndr/ndr_wbint.c +++ b/bin/default/source3/librpc/gen_ndr/ndr_wbint.c @@ -90,6 +90,8 @@ static enum ndr_err_code ndr_pull_wbint_TransIDArray(struct ndr_pull *ndr, int n NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ids_0, 0); if (r->ids) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->ids, r->num_ids)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_ids)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); } @@ -341,6 +343,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_wbint_SidArray(struct ndr_pull *ndr, int ndr NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, 0); if (r->sids) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sids, r->num_sids)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_sids)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); } @@ -403,6 +407,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_wbint_RidArray(struct ndr_pull *ndr, int ndr NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rids_0, 0); if (r->rids) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->rids, r->num_rids)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_rids)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); } @@ -543,6 +549,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_wbint_Principals(struct ndr_pull *ndr, int n NDR_PULL_SET_MEM_CTX(ndr, _mem_save_principals_0, 0); if (r->principals) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->principals, r->num_principals)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_principals)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); } @@ -615,6 +623,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_wbint_userinfos(struct ndr_pull *ndr, int nd NDR_PULL_SET_MEM_CTX(ndr, _mem_save_userinfos_0, 0); if (r->userinfos) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->userinfos, r->num_userinfos)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_userinfos)); } NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); } diff --git a/bin/default/source4/librpc/gen_ndr/ndr_irpc.c b/bin/default/source4/librpc/gen_ndr/ndr_irpc.c index 44047b1..1046bba 100644 --- a/bin/default/source4/librpc/gen_ndr/ndr_irpc.c +++ b/bin/default/source4/librpc/gen_ndr/ndr_irpc.c @@ -532,6 +532,8 @@ static enum ndr_err_code ndr_pull_smbsrv_sessions(struct ndr_pull *ndr, int ndr_ } if (r->sessions) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sessions, r->num_sessions)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_sessions)); } } return NDR_ERR_SUCCESS; @@ -682,6 +684,8 @@ static enum ndr_err_code ndr_pull_smbsrv_tcons(struct ndr_pull *ndr, int ndr_fla } if (r->tcons) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->tcons, r->num_tcons)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_tcons)); } } return NDR_ERR_SUCCESS; diff --git a/bin/default/source4/librpc/gen_ndr/ndr_winbind.c b/bin/default/source4/librpc/gen_ndr/ndr_winbind.c index 4f87128..737c370 100644 --- a/bin/default/source4/librpc/gen_ndr/ndr_winbind.c +++ b/bin/default/source4/librpc/gen_ndr/ndr_winbind.c @@ -237,6 +237,8 @@ static enum ndr_err_code ndr_pull_winbind_get_idmap(struct ndr_pull *ndr, int fl NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ids_0, 0); if (r->in.ids) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.ids, r->in.count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.count)); } } if (flags & NDR_OUT) { @@ -255,6 +257,8 @@ static enum ndr_err_code ndr_pull_winbind_get_idmap(struct ndr_pull *ndr, int fl NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result)); if (r->out.ids) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.ids, r->in.count)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->in.count)); } } return NDR_ERR_SUCCESS; diff --git a/bin/default/source4/librpc/gen_ndr/ndr_winsif.c b/bin/default/source4/librpc/gen_ndr/ndr_winsif.c index 511bf67..3e441a6 100644 --- a/bin/default/source4/librpc/gen_ndr/ndr_winsif.c +++ b/bin/default/source4/librpc/gen_ndr/ndr_winsif.c @@ -248,6 +248,8 @@ static enum ndr_err_code ndr_pull_winsif_RecordAction(struct ndr_pull *ndr, int } if (r->addresses) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->addresses, r->num_of_addresses)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_of_addresses)); } } return NDR_ERR_SUCCESS; @@ -588,6 +590,8 @@ static enum ndr_err_code ndr_pull_winsif_Stat(struct ndr_pull *ndr, int ndr_flag } if (r->partners) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->partners, r->num_partners)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_partners)); } } return NDR_ERR_SUCCESS; @@ -814,6 +818,8 @@ static enum ndr_err_code ndr_pull_winsif_Records(struct ndr_pull *ndr, int ndr_f } if (r->row) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->row, r->num_records)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_records)); } } return NDR_ERR_SUCCESS; @@ -977,6 +983,8 @@ static enum ndr_err_code ndr_pull_winsif_BrowserNames(struct ndr_pull *ndr, int } if (r->info) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->info, r->num_entries)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_entries)); } } return NDR_ERR_SUCCESS; @@ -1187,6 +1195,8 @@ static enum ndr_err_code ndr_pull_winsif_ResultsNew(struct ndr_pull *ndr, int nd NDR_CHECK(ndr_pull_winsif_Stat(ndr, NDR_BUFFERS, &r->wstat)); if (r->address_version_maps) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->address_version_maps, r->num_owners)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, r->num_owners)); } } return NDR_ERR_SUCCESS; @@ -2229,9 +2239,13 @@ static enum ndr_err_code ndr_pull_winsif_WinsGetNameAndAdd(struct ndr_pull *ndr, NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); if (r->out.unc_name) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.unc_name, 80)); + } else { + NDR_CHECK(ndr_check_array_size(ndr, NULL, 80)); } if (r->out.unc_name) { NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.unc_name, 80)); + } else { + NDR_CHECK(ndr_check_array_length(ndr, NULL, 80)); } } return NDR_ERR_SUCCESS; -- 1.7.6.5