diff options
Diffstat (limited to 'source3/librpc')
-rw-r--r-- | source3/librpc/gen_ndr/ndr_wkssvc.c | 18 | ||||
-rw-r--r-- | source3/librpc/gen_ndr/wkssvc.h | 4 | ||||
-rw-r--r-- | source3/librpc/idl/wkssvc.idl | 2 |
3 files changed, 15 insertions, 9 deletions
diff --git a/source3/librpc/gen_ndr/ndr_wkssvc.c b/source3/librpc/gen_ndr/ndr_wkssvc.c index 60bbc857d1..9455d09c5f 100644 --- a/source3/librpc/gen_ndr/ndr_wkssvc.c +++ b/source3/librpc/gen_ndr/ndr_wkssvc.c @@ -2680,7 +2680,8 @@ NTSTATUS ndr_push_wkssvc_NetWkstaTransportEnum(struct ndr_push *ndr, int flags, if (r->in.level == NULL) return NT_STATUS_INVALID_PARAMETER_MIX; NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.level)); if (r->in.ctr == NULL) return NT_STATUS_INVALID_PARAMETER_MIX; - NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.ctr, r->in.level)); + if (r->in.level == NULL) return NT_STATUS_INVALID_PARAMETER_MIX; + NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.ctr, *r->in.level)); NDR_CHECK(ndr_push_wkssvc_NetWkstaTransportCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.ctr)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.max_buffer)); if (r->in.resume_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX; @@ -2690,7 +2691,8 @@ NTSTATUS ndr_push_wkssvc_NetWkstaTransportEnum(struct ndr_push *ndr, int flags, if (r->out.level == NULL) return NT_STATUS_INVALID_PARAMETER_MIX; NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.level)); if (r->out.ctr == NULL) return NT_STATUS_INVALID_PARAMETER_MIX; - NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.ctr, r->out.level)); + if (r->out.level == NULL) return NT_STATUS_INVALID_PARAMETER_MIX; + NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.ctr, *r->out.level)); NDR_CHECK(ndr_push_wkssvc_NetWkstaTransportCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr)); NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.totalentries)); if (r->out.totalentries) { @@ -2745,7 +2747,8 @@ NTSTATUS ndr_pull_wkssvc_NetWkstaTransportEnum(struct ndr_pull *ndr, int flags, } _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr); NDR_PULL_SET_MEM_CTX(ndr, r->in.ctr, LIBNDR_FLAG_REF_ALLOC); - NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.ctr, r->in.level)); + if (r->in.level == NULL) return NT_STATUS_INVALID_PARAMETER_MIX; + NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.ctr, *r->in.level)); NDR_CHECK(ndr_pull_wkssvc_NetWkstaTransportCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.ctr)); NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.max_buffer)); @@ -2776,7 +2779,8 @@ NTSTATUS ndr_pull_wkssvc_NetWkstaTransportEnum(struct ndr_pull *ndr, int flags, } _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr); NDR_PULL_SET_MEM_CTX(ndr, r->out.ctr, LIBNDR_FLAG_REF_ALLOC); - NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.ctr, r->out.level)); + if (r->out.level == NULL) return NT_STATUS_INVALID_PARAMETER_MIX; + NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.ctr, *r->out.level)); NDR_CHECK(ndr_pull_wkssvc_NetWkstaTransportCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr)); NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC); NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_totalentries)); @@ -2825,7 +2829,8 @@ _PUBLIC_ void ndr_print_wkssvc_NetWkstaTransportEnum(struct ndr_print *ndr, cons ndr->depth--; ndr_print_ptr(ndr, "ctr", r->in.ctr); ndr->depth++; - ndr_print_set_switch_value(ndr, r->in.ctr, r->in.level); + if (r->in.level == NULL) return; + ndr_print_set_switch_value(ndr, r->in.ctr, *r->in.level); ndr_print_wkssvc_NetWkstaTransportCtr(ndr, "ctr", r->in.ctr); ndr->depth--; ndr_print_uint32(ndr, "max_buffer", r->in.max_buffer); @@ -2844,7 +2849,8 @@ _PUBLIC_ void ndr_print_wkssvc_NetWkstaTransportEnum(struct ndr_print *ndr, cons ndr->depth--; ndr_print_ptr(ndr, "ctr", r->out.ctr); ndr->depth++; - ndr_print_set_switch_value(ndr, r->out.ctr, r->out.level); + if (r->out.level == NULL) return; + ndr_print_set_switch_value(ndr, r->out.ctr, *r->out.level); ndr_print_wkssvc_NetWkstaTransportCtr(ndr, "ctr", r->out.ctr); ndr->depth--; ndr_print_ptr(ndr, "totalentries", r->out.totalentries); diff --git a/source3/librpc/gen_ndr/wkssvc.h b/source3/librpc/gen_ndr/wkssvc.h index f6b7d1fafb..84e6d19853 100644 --- a/source3/librpc/gen_ndr/wkssvc.h +++ b/source3/librpc/gen_ndr/wkssvc.h @@ -247,14 +247,14 @@ struct wkssvc_NetWkstaTransportEnum { struct { const char *server_name;/* [unique,charset(UTF16)] */ uint32_t *level;/* [ref] */ - union wkssvc_NetWkstaTransportCtr *ctr;/* [ref,switch_is(level)] */ + union wkssvc_NetWkstaTransportCtr *ctr;/* [ref,switch_is(*level)] */ uint32_t max_buffer; uint32_t *resume_handle;/* [ref] */ } in; struct { uint32_t *level;/* [ref] */ - union wkssvc_NetWkstaTransportCtr *ctr;/* [ref,switch_is(level)] */ + union wkssvc_NetWkstaTransportCtr *ctr;/* [ref,switch_is(*level)] */ uint32_t *totalentries;/* [unique] */ uint32_t *resume_handle;/* [ref] */ WERROR result; diff --git a/source3/librpc/idl/wkssvc.idl b/source3/librpc/idl/wkssvc.idl index 8c789fd8ca..80fe4efa1a 100644 --- a/source3/librpc/idl/wkssvc.idl +++ b/source3/librpc/idl/wkssvc.idl @@ -217,7 +217,7 @@ WERROR wkssvc_NetWkstaTransportEnum ( [in] [string,charset(UTF16)] uint16 *server_name, [in,out,ref] uint32 *level, - [in,out,switch_is(level),ref] wkssvc_NetWkstaTransportCtr *ctr, + [in,out,switch_is(*level),ref] wkssvc_NetWkstaTransportCtr *ctr, [in] uint32 max_buffer, [out] uint32 *totalentries, [in,out,ref] uint32 *resume_handle |