summaryrefslogtreecommitdiff
path: root/source3/librpc
diff options
context:
space:
mode:
Diffstat (limited to 'source3/librpc')
-rw-r--r--source3/librpc/gen_ndr/ndr_wkssvc.c18
-rw-r--r--source3/librpc/gen_ndr/wkssvc.h4
-rw-r--r--source3/librpc/idl/wkssvc.idl2
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