The Samba-Bugzilla – Attachment 7437 Details for
Bug 8815
PIDL based autogenerated code allows overwriting beyond of allocated array; CVE-2012-1182
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
gen_ndr for master after my patch
0003-gen_ndr.patch (text/plain), 151.75 KB, created by
Andrew Bartlett
on 2012-04-06 05:07:57 UTC
(
hide
)
Description:
gen_ndr for master after my patch
Filename:
MIME Type:
Creator:
Andrew Bartlett
Created:
2012-04-06 05:07:57 UTC
Size:
151.75 KB
patch
obsolete
>From e10ac68038b2553150cd1c924580c58308cb1a22 Mon Sep 17 00:00:00 2001 >From: Andrew Bartlett <abartlet@samba.org> >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 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 8815
:
7389
|
7390
|
7391
|
7392
|
7393
|
7398
|
7399
|
7400
|
7418
|
7419
|
7420
|
7421
|
7426
|
7427
|
7428
|
7429
|
7430
|
7431
|
7432
|
7433
|
7436
|
7437