summaryrefslogtreecommitdiff
path: root/source4/librpc
diff options
context:
space:
mode:
Diffstat (limited to 'source4/librpc')
-rw-r--r--source4/librpc/config.mk36
-rw-r--r--source4/librpc/ndr/ndr_spoolss_buf.c532
-rw-r--r--source4/librpc/ndr/ndr_string.c23
-rw-r--r--source4/librpc/ndr/py_security.c18
-rw-r--r--source4/librpc/rpc/dcerpc.c4
-rw-r--r--source4/librpc/rpc/dcerpc_connect.c4
-rw-r--r--source4/librpc/rpc/dcerpc_smb.c16
-rw-r--r--source4/librpc/rpc/dcerpc_sock.c14
-rwxr-xr-xsource4/librpc/tests/test_ndrdump.sh4
9 files changed, 70 insertions, 581 deletions
diff --git a/source4/librpc/config.mk b/source4/librpc/config.mk
index 5bbdfaf4d8..3e6ea313e7 100644
--- a/source4/librpc/config.mk
+++ b/source4/librpc/config.mk
@@ -180,9 +180,7 @@ NDR_SPOOLSS_OBJ_FILES = ../librpc/gen_ndr/ndr_spoolss.o
[SUBSYSTEM::NDR_SPOOLSS_BUF]
-NDR_SPOOLSS_BUF_OBJ_FILES = $(ndrsrcdir)/ndr_spoolss_buf.o
-
-$(eval $(call proto_header_template,$(ndrsrcdir)/ndr_spoolss_buf.h,$(NDR_SPOOLSS_BUF_OBJ_FILES:.o=.c)))
+NDR_SPOOLSS_BUF_OBJ_FILES = ../librpc/ndr/ndr_spoolss_buf.o
[SUBSYSTEM::NDR_WKSSVC]
PUBLIC_DEPENDENCIES = LIBNDR NDR_SRVSVC NDR_SECURITY
@@ -633,7 +631,7 @@ PUBLIC_HEADERS += $(addprefix $(librpcsrcdir)/, rpc/dcerpc.h) \
[PYTHON::python_dcerpc]
LIBRARY_REALNAME = samba/dcerpc/base.$(SHLIBEXT)
-PUBLIC_DEPENDENCIES = LIBCLI_SMB LIBSAMBA-UTIL LIBSAMBA-HOSTCONFIG dcerpc_samr RPC_NDR_LSA DYNCONFIG swig_credentials param
+PUBLIC_DEPENDENCIES = LIBCLI_SMB LIBSAMBA-UTIL LIBSAMBA-HOSTCONFIG dcerpc_samr RPC_NDR_LSA DYNCONFIG pycredentials param
python_dcerpc_OBJ_FILES = $(dcerpcsrcdir)/pyrpc.o
@@ -642,13 +640,13 @@ $(eval $(call python_py_module_template,samba/dcerpc/__init__.py,$(dcerpcsrcdir)
[PYTHON::python_echo]
LIBRARY_REALNAME = samba/dcerpc/echo.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = RPC_NDR_ECHO PYTALLOC param swig_credentials python_dcerpc
+PRIVATE_DEPENDENCIES = RPC_NDR_ECHO PYTALLOC param pycredentials python_dcerpc
python_echo_OBJ_FILES = ../librpc/gen_ndr/py_echo.o
[PYTHON::python_winreg]
LIBRARY_REALNAME = samba/dcerpc/winreg.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = RPC_NDR_WINREG PYTALLOC param swig_credentials python_dcerpc
+PRIVATE_DEPENDENCIES = RPC_NDR_WINREG PYTALLOC param pycredentials python_dcerpc
python_winreg_OBJ_FILES = ../librpc/gen_ndr/py_winreg.o
@@ -660,79 +658,79 @@ python_dcerpc_misc_OBJ_FILES = ../librpc/gen_ndr/py_misc.o
[PYTHON::python_initshutdown]
LIBRARY_REALNAME = samba/dcerpc/initshutdown.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = RPC_NDR_INITSHUTDOWN PYTALLOC param swig_credentials python_dcerpc
+PRIVATE_DEPENDENCIES = RPC_NDR_INITSHUTDOWN PYTALLOC param pycredentials python_dcerpc
python_initshutdown_OBJ_FILES = ../librpc/gen_ndr/py_initshutdown.o
[PYTHON::python_epmapper]
LIBRARY_REALNAME = samba/dcerpc/epmapper.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = dcerpc PYTALLOC param swig_credentials python_dcerpc
+PRIVATE_DEPENDENCIES = dcerpc PYTALLOC param pycredentials python_dcerpc
python_epmapper_OBJ_FILES = ../librpc/gen_ndr/py_epmapper.o
[PYTHON::python_mgmt]
LIBRARY_REALNAME = samba/dcerpc/mgmt.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = PYTALLOC param swig_credentials dcerpc python_dcerpc
+PRIVATE_DEPENDENCIES = PYTALLOC param pycredentials dcerpc python_dcerpc
python_mgmt_OBJ_FILES = ../librpc/gen_ndr/py_mgmt.o
[PYTHON::python_atsvc]
LIBRARY_REALNAME = samba/dcerpc/atsvc.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = dcerpc_atsvc PYTALLOC param swig_credentials python_dcerpc
+PRIVATE_DEPENDENCIES = dcerpc_atsvc PYTALLOC param pycredentials python_dcerpc
python_atsvc_OBJ_FILES = ../librpc/gen_ndr/py_atsvc.o
[PYTHON::python_dcerpc_nbt]
LIBRARY_REALNAME = samba/dcerpc/nbt.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = NDR_NBT PYTALLOC param swig_credentials python_dcerpc
+PRIVATE_DEPENDENCIES = NDR_NBT PYTALLOC param pycredentials python_dcerpc
python_dcerpc_nbt_OBJ_FILES = ../librpc/gen_ndr/py_nbt.o
[PYTHON::python_samr]
LIBRARY_REALNAME = samba/dcerpc/samr.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = dcerpc_samr PYTALLOC swig_credentials param python_dcerpc
+PRIVATE_DEPENDENCIES = dcerpc_samr PYTALLOC pycredentials param python_dcerpc
python_samr_OBJ_FILES = ../librpc/gen_ndr/py_samr.o
[PYTHON::python_svcctl]
LIBRARY_REALNAME = samba/dcerpc/svcctl.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = RPC_NDR_SVCCTL PYTALLOC param swig_credentials python_dcerpc
+PRIVATE_DEPENDENCIES = RPC_NDR_SVCCTL PYTALLOC param pycredentials python_dcerpc
python_svcctl_OBJ_FILES = ../librpc/gen_ndr/py_svcctl.o
[PYTHON::python_lsa]
LIBRARY_REALNAME = samba/dcerpc/lsa.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = RPC_NDR_LSA PYTALLOC param swig_credentials python_dcerpc
+PRIVATE_DEPENDENCIES = RPC_NDR_LSA PYTALLOC param pycredentials python_dcerpc
python_lsa_OBJ_FILES = ../librpc/gen_ndr/py_lsa.o
[PYTHON::python_wkssvc]
LIBRARY_REALNAME = samba/dcerpc/wkssvc.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = RPC_NDR_WKSSVC PYTALLOC param swig_credentials python_dcerpc
+PRIVATE_DEPENDENCIES = RPC_NDR_WKSSVC PYTALLOC param pycredentials python_dcerpc
python_wkssvc_OBJ_FILES = ../librpc/gen_ndr/py_wkssvc.o
[PYTHON::python_dfs]
LIBRARY_REALNAME = samba/dcerpc/dfs.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = RPC_NDR_DFS PYTALLOC param swig_credentials python_dcerpc
+PRIVATE_DEPENDENCIES = RPC_NDR_DFS PYTALLOC param pycredentials python_dcerpc
python_dfs_OBJ_FILES = ../librpc/gen_ndr/py_dfs.o
[PYTHON::python_unixinfo]
LIBRARY_REALNAME = samba/dcerpc/unixinfo.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = RPC_NDR_UNIXINFO PYTALLOC param swig_credentials python_dcerpc
+PRIVATE_DEPENDENCIES = RPC_NDR_UNIXINFO PYTALLOC param pycredentials python_dcerpc
python_unixinfo_OBJ_FILES = ../librpc/gen_ndr/py_unixinfo.o
[PYTHON::python_irpc]
LIBRARY_REALNAME = samba/dcerpc/irpc.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = RPC_NDR_IRPC PYTALLOC param swig_credentials python_dcerpc
+PRIVATE_DEPENDENCIES = RPC_NDR_IRPC PYTALLOC param pycredentials python_dcerpc
python_irpc_OBJ_FILES = $(gen_ndrsrcdir)/py_irpc.o
[PYTHON::python_drsuapi]
LIBRARY_REALNAME = samba/dcerpc/drsuapi.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = RPC_NDR_DRSUAPI PYTALLOC param swig_credentials python_dcerpc
+PRIVATE_DEPENDENCIES = RPC_NDR_DRSUAPI PYTALLOC param pycredentials python_dcerpc
python_drsuapi_OBJ_FILES = ../librpc/gen_ndr/py_drsuapi.o
diff --git a/source4/librpc/ndr/ndr_spoolss_buf.c b/source4/librpc/ndr/ndr_spoolss_buf.c
deleted file mode 100644
index 335275f680..0000000000
--- a/source4/librpc/ndr/ndr_spoolss_buf.c
+++ /dev/null
@@ -1,532 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
-
- routines for marshalling/unmarshalling spoolss subcontext buffer structures
-
- Copyright (C) Andrew Tridgell 2003
- Copyright (C) Tim Potter 2003
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-
-#include "includes.h"
-#include "librpc/gen_ndr/ndr_spoolss.h"
-#include "param/param.h"
-
-#define NDR_SPOOLSS_PUSH_ENUM_IN(fn) do { \
- if (!r->in.buffer && r->in.offered != 0) {\
- return ndr_push_error(ndr, NDR_ERR_BUFSIZE,\
- "SPOOLSS Buffer: r->in.offered[%u] but there's no buffer",\
- (unsigned)r->in.offered);\
- } else if (r->in.buffer && r->in.buffer->length != r->in.offered) {\
- return ndr_push_error(ndr, NDR_ERR_BUFSIZE,\
- "SPOOLSS Buffer: r->in.offered[%u] doesn't match length of r->in.buffer[%u]",\
- (unsigned)r->in.offered, (unsigned)r->in.buffer->length);\
- }\
- _r.in.level = r->in.level;\
- _r.in.buffer = r->in.buffer;\
- _r.in.offered = r->in.offered;\
- NDR_CHECK(ndr_push__##fn(ndr, flags, &_r));\
-} while(0)
-
-#define NDR_SPOOLSS_PUSH_ENUM_OUT(fn) do { \
- struct ndr_push *_ndr_info;\
- _r.in.level = r->in.level;\
- _r.in.buffer = r->in.buffer;\
- _r.in.offered = r->in.offered;\
- _r.out.info = NULL;\
- _r.out.needed = r->out.needed;\
- _r.out.count = r->out.count;\
- _r.out.result = r->out.result;\
- if (r->out.info && !r->in.buffer) {\
- return ndr_push_error(ndr, NDR_ERR_BUFSIZE,\
- "SPOOLSS Buffer: r->out.info but there's no r->in.buffer");\
- }\
- if (r->in.buffer) {\
- DATA_BLOB _data_blob_info;\
- _ndr_info = ndr_push_init_ctx(ndr, ndr->iconv_convenience);\
- NDR_ERR_HAVE_NO_MEMORY(_ndr_info);\
- _ndr_info->flags= ndr->flags;\
- if (r->out.info) {\
- struct __##fn __r;\
- __r.in.level = r->in.level;\
- __r.in.count = r->out.count;\
- __r.out.info = r->out.info;\
- NDR_CHECK(ndr_push___##fn(_ndr_info, flags, &__r)); \
- }\
- if (r->in.offered > _ndr_info->offset) {\
- uint32_t _padding_len = r->in.offered - _ndr_info->offset;\
- NDR_CHECK(ndr_push_zero(_ndr_info, _padding_len));\
- } else if (r->in.offered < _ndr_info->offset) {\
- return ndr_push_error(ndr, NDR_ERR_BUFSIZE,\
- "SPOOLSS Buffer: r->in.offered[%u] doesn't match length of out buffer[%u]!",\
- (unsigned)r->in.offered, (unsigned)_ndr_info->offset);\
- }\
- _data_blob_info = ndr_push_blob(_ndr_info);\
- _r.out.info = &_data_blob_info;\
- }\
- NDR_CHECK(ndr_push__##fn(ndr, flags, &_r));\
-} while(0)
-
-#define NDR_SPOOLSS_PUSH_ENUM(fn,in,out) do { \
- struct _##fn _r;\
- if (flags & NDR_IN) {\
- in;\
- NDR_SPOOLSS_PUSH_ENUM_IN(fn);\
- }\
- if (flags & NDR_OUT) {\
- out;\
- NDR_SPOOLSS_PUSH_ENUM_OUT(fn);\
- }\
-} while(0)
-
-#define NDR_SPOOLSS_PULL_ENUM_IN(fn) do { \
- ZERO_STRUCT(r->out);\
- NDR_CHECK(ndr_pull__##fn(ndr, flags, &_r));\
- r->in.level = _r.in.level;\
- r->in.buffer = _r.in.buffer;\
- r->in.offered = _r.in.offered;\
- r->out.needed = _r.out.needed;\
- if (!r->in.buffer && r->in.offered != 0) {\
- return ndr_pull_error(ndr, NDR_ERR_BUFSIZE,\
- "SPOOLSS Buffer: r->in.offered[%u] but there's no buffer",\
- (unsigned)r->in.offered);\
- } else if (r->in.buffer && r->in.buffer->length != r->in.offered) {\
- return ndr_pull_error(ndr, NDR_ERR_BUFSIZE,\
- "SPOOLSS Buffer: r->in.offered[%u] doesn't match length of r->in.buffer[%u]",\
- (unsigned)r->in.offered, (unsigned)r->in.buffer->length);\
- }\
-} while(0)
-
-#define NDR_SPOOLSS_PULL_ENUM_OUT(fn) do { \
- _r.in.level = r->in.level;\
- _r.in.buffer = r->in.buffer;\
- _r.in.offered = r->in.offered;\
- _r.out.needed = r->out.needed;\
- NDR_CHECK(ndr_pull__##fn(ndr, flags, &_r));\
- r->out.info = NULL;\
- r->out.needed = _r.out.needed;\
- r->out.count = _r.out.count;\
- r->out.result = _r.out.result;\
- if (_r.out.info) {\
- struct ndr_pull *_ndr_info = ndr_pull_init_blob(_r.out.info, ndr, ndr->iconv_convenience);\
- NDR_ERR_HAVE_NO_MEMORY(_ndr_info);\
- _ndr_info->flags= ndr->flags;\
- if (r->in.offered != _ndr_info->data_size) {\
- return ndr_pull_error(ndr, NDR_ERR_BUFSIZE,\
- "SPOOLSS Buffer: offered[%u] doesn't match length of buffer[%u]",\
- (unsigned)r->in.offered, (unsigned)_ndr_info->data_size);\
- }\
- if (r->out.needed <= _ndr_info->data_size) {\
- struct __##fn __r;\
- __r.in.level = r->in.level;\
- __r.in.count = r->out.count;\
- __r.out.info = NULL;\
- NDR_CHECK(ndr_pull___##fn(_ndr_info, flags, &__r));\
- r->out.info = __r.out.info;\
- }\
- }\
-} while(0)
-
-#define NDR_SPOOLSS_PULL_ENUM(fn,in,out) do { \
- struct _##fn _r;\
- if (flags & NDR_IN) {\
- out;\
- NDR_SPOOLSS_PULL_ENUM_IN(fn);\
- in;\
- }\
- if (flags & NDR_OUT) {\
- out;\
- NDR_SPOOLSS_PULL_ENUM_OUT(fn);\
- }\
-} while(0)
-
-#define _NDR_CHECK_UINT32(call) do {\
- enum ndr_err_code _ndr_err; \
- _ndr_err = call; \
- if (!NDR_ERR_CODE_IS_SUCCESS(_ndr_err)) { \
- return 0; \
- }\
-} while (0)
-
-/* TODO: set _ndr_info->flags correct */
-#define NDR_SPOOLSS_SIZE_ENUM(fn) do { \
- struct __##fn __r;\
- DATA_BLOB _data_blob_info;\
- struct ndr_push *_ndr_info = ndr_push_init_ctx(mem_ctx, iconv_convenience);\
- if (!_ndr_info) return 0;\
- _ndr_info->flags|=0;\
- __r.in.level = level;\
- __r.in.count = count;\
- __r.out.info = info;\
- _NDR_CHECK_UINT32(ndr_push___##fn(_ndr_info, NDR_OUT, &__r)); \
- _data_blob_info = ndr_push_blob(_ndr_info);\
- return _data_blob_info.length;\
-} while(0)
-
-/*
- spoolss_EnumPrinters
-*/
-enum ndr_err_code ndr_push_spoolss_EnumPrinters(struct ndr_push *ndr, int flags, const struct spoolss_EnumPrinters *r)
-{
- NDR_SPOOLSS_PUSH_ENUM(spoolss_EnumPrinters,{
- _r.in.flags = r->in.flags;
- _r.in.server = r->in.server;
- },{
- _r.in.flags = r->in.flags;
- _r.in.server = r->in.server;
- });
- return NDR_ERR_SUCCESS;
-}
-
-enum ndr_err_code ndr_pull_spoolss_EnumPrinters(struct ndr_pull *ndr, int flags, struct spoolss_EnumPrinters *r)
-{
- NDR_SPOOLSS_PULL_ENUM(spoolss_EnumPrinters,{
- r->in.flags = _r.in.flags;
- r->in.server = _r.in.server;
- },{
- _r.in.flags = r->in.flags;
- _r.in.server = r->in.server;
- });
- return NDR_ERR_SUCCESS;
-}
-
-uint32_t ndr_size_spoolss_EnumPrinters_info(TALLOC_CTX *mem_ctx, struct smb_iconv_convenience *iconv_convenience, uint32_t level, uint32_t count, union spoolss_PrinterInfo *info)
-{
- NDR_SPOOLSS_SIZE_ENUM(spoolss_EnumPrinters);
-}
-
-/*
- spoolss_EnumJobs
-*/
-enum ndr_err_code ndr_push_spoolss_EnumJobs(struct ndr_push *ndr, int flags, const struct spoolss_EnumJobs *r)
-{
- NDR_SPOOLSS_PUSH_ENUM(spoolss_EnumJobs,{
- _r.in.handle = r->in.handle;
- _r.in.firstjob = r->in.firstjob;
- _r.in.numjobs = r->in.numjobs;
- },{
- _r.in.handle = r->in.handle;
- _r.in.firstjob = r->in.firstjob;
- _r.in.numjobs = r->in.numjobs;
- });
- return NDR_ERR_SUCCESS;
-}
-
-enum ndr_err_code ndr_pull_spoolss_EnumJobs(struct ndr_pull *ndr, int flags, struct spoolss_EnumJobs *r)
-{
- NDR_SPOOLSS_PULL_ENUM(spoolss_EnumJobs,{
- r->in.handle = _r.in.handle;
- r->in.firstjob = _r.in.firstjob;
- r->in.numjobs = _r.in.numjobs;
- },{
- _r.in.handle = r->in.handle;
- _r.in.firstjob = r->in.firstjob;
- _r.in.numjobs = r->in.numjobs;
- });
- return NDR_ERR_SUCCESS;
-}
-
-uint32_t ndr_size_spoolss_EnumJobss_info(TALLOC_CTX *mem_ctx, struct smb_iconv_convenience *iconv_convenience, uint32_t level, uint32_t count, union spoolss_JobInfo *info)
-{
- NDR_SPOOLSS_SIZE_ENUM(spoolss_EnumJobs);
-}
-
-/*
- spoolss_EnumPrinterDrivers
-*/
-enum ndr_err_code ndr_push_spoolss_EnumPrinterDrivers(struct ndr_push *ndr, int flags, const struct spoolss_EnumPrinterDrivers *r)
-{
- NDR_SPOOLSS_PUSH_ENUM(spoolss_EnumPrinterDrivers,{
- _r.in.server = r->in.server;
- _r.in.environment = r->in.environment;
- },{
- _r.in.server = r->in.server;
- _r.in.environment = r->in.environment;
- });
- return NDR_ERR_SUCCESS;
-}
-
-enum ndr_err_code ndr_pull_spoolss_EnumPrinterDrivers(struct ndr_pull *ndr, int flags, struct spoolss_EnumPrinterDrivers *r)
-{
- NDR_SPOOLSS_PULL_ENUM(spoolss_EnumPrinterDrivers,{
- r->in.server = _r.in.server;
- r->in.environment = _r.in.environment;
- },{
- _r.in.server = r->in.server;
- _r.in.environment = r->in.environment;
- });
- return NDR_ERR_SUCCESS;
-}
-
-uint32_t ndr_size_spoolss_EnumPrinterDrivers_info(TALLOC_CTX *mem_ctx, struct smb_iconv_convenience *iconv_convenience, uint32_t level, uint32_t count, union spoolss_DriverInfo *info)
-{
- NDR_SPOOLSS_SIZE_ENUM(spoolss_EnumPrinterDrivers);
-}
-
-/*
- spoolss_EnumForms
-*/
-enum ndr_err_code ndr_push_spoolss_EnumForms(struct ndr_push *ndr, int flags, const struct spoolss_EnumForms *r)
-{
- NDR_SPOOLSS_PUSH_ENUM(spoolss_EnumForms,{
- _r.in.handle = r->in.handle;
- },{
- _r.in.handle = r->in.handle;
- });
- return NDR_ERR_SUCCESS;
-}
-
-enum ndr_err_code ndr_pull_spoolss_EnumForms(struct ndr_pull *ndr, int flags, struct spoolss_EnumForms *r)
-{
- NDR_SPOOLSS_PULL_ENUM(spoolss_EnumForms,{
- r->in.handle = _r.in.handle;
- },{
- _r.in.handle = r->in.handle;
- });
- return NDR_ERR_SUCCESS;
-}
-
-uint32_t ndr_size_spoolss_EnumForms_info(TALLOC_CTX *mem_ctx, struct smb_iconv_convenience *iconv_convenience, uint32_t level, uint32_t count, union spoolss_FormInfo *info)
-{
- NDR_SPOOLSS_SIZE_ENUM(spoolss_EnumForms);
-}
-
-/*
- spoolss_EnumPorts
-*/
-enum ndr_err_code ndr_push_spoolss_EnumPorts(struct ndr_push *ndr, int flags, const struct spoolss_EnumPorts *r)
-{
- NDR_SPOOLSS_PUSH_ENUM(spoolss_EnumPorts,{
- _r.in.servername= r->in.servername;
- },{
- _r.in.servername= r->in.servername;
- });
- return NDR_ERR_SUCCESS;
-}
-
-enum ndr_err_code ndr_pull_spoolss_EnumPorts(struct ndr_pull *ndr, int flags, struct spoolss_EnumPorts *r)
-{
- NDR_SPOOLSS_PULL_ENUM(spoolss_EnumPorts,{
- r->in.servername= _r.in.servername;
- },{
- _r.in.servername= r->in.servername;
- });
- return NDR_ERR_SUCCESS;
-}
-
-uint32_t ndr_size_spoolss_EnumPorts_info(TALLOC_CTX *mem_ctx, struct smb_iconv_convenience *iconv_convenience, uint32_t level, uint32_t count, union spoolss_PortInfo *info)
-{
- NDR_SPOOLSS_SIZE_ENUM(spoolss_EnumPorts);
-}
-
-/*
- spoolss_EnumMonitors
-*/
-enum ndr_err_code ndr_push_spoolss_EnumMonitors(struct ndr_push *ndr, int flags, const struct spoolss_EnumMonitors *r)
-{
- NDR_SPOOLSS_PUSH_ENUM(spoolss_EnumMonitors,{
- _r.in.servername= r->in.servername;
- },{
- _r.in.servername= r->in.servername;
- });
- return NDR_ERR_SUCCESS;
-}
-
-enum ndr_err_code ndr_pull_spoolss_EnumMonitors(struct ndr_pull *ndr, int flags, struct spoolss_EnumMonitors *r)
-{
- NDR_SPOOLSS_PULL_ENUM(spoolss_EnumMonitors,{
- r->in.servername= _r.in.servername;
- },{
- _r.in.servername= r->in.servername;
- });
- return NDR_ERR_SUCCESS;
-}
-
-uint32_t ndr_size_spoolss_EnumMonitors_info(TALLOC_CTX *mem_ctx, struct smb_iconv_convenience *iconv_convenience, uint32_t level, uint32_t count, union spoolss_MonitorInfo *info)
-{
- NDR_SPOOLSS_SIZE_ENUM(spoolss_EnumMonitors);
-}
-
-/*
- spoolss_EnumPrintProcessors
-*/
-enum ndr_err_code ndr_push_spoolss_EnumPrintProcessors(struct ndr_push *ndr, int flags, const struct spoolss_EnumPrintProcessors *r)
-{
- NDR_SPOOLSS_PUSH_ENUM(spoolss_EnumPrintProcessors,{
- _r.in.servername = r->in.servername;
- _r.in.environment = r->in.environment;
- },{
- _r.in.servername = r->in.servername;
- _r.in.environment = r->in.environment;
- });
- return NDR_ERR_SUCCESS;
-}
-
-enum ndr_err_code ndr_pull_spoolss_EnumPrintProcessors(struct ndr_pull *ndr, int flags, struct spoolss_EnumPrintProcessors *r)
-{
- NDR_SPOOLSS_PULL_ENUM(spoolss_EnumPrintProcessors,{
- r->in.servername = _r.in.servername;
- r->in.environment = _r.in.environment;
- },{
- _r.in.servername = r->in.servername;
- _r.in.environment = r->in.environment;
- });
- return NDR_ERR_SUCCESS;
-}
-
-uint32_t ndr_size_spoolss_EnumPrinterProcessors_info(TALLOC_CTX *mem_ctx, struct smb_iconv_convenience *iconv_convenience,
- uint32_t level, uint32_t count, union spoolss_PrintProcessorInfo *info)
-{
- NDR_SPOOLSS_SIZE_ENUM(spoolss_EnumPrintProcessors);
-}
-
-/*
- spoolss_GetPrinterData
-*/
-enum ndr_err_code ndr_push_spoolss_GetPrinterData(struct ndr_push *ndr, int flags, const struct spoolss_GetPrinterData *r)
-{
- struct _spoolss_GetPrinterData _r;
- if (flags & NDR_IN) {
- _r.in.handle = r->in.handle;
- _r.in.value_name= r->in.value_name;
- _r.in.offered = r->in.offered;
- NDR_CHECK(ndr_push__spoolss_GetPrinterData(ndr, flags, &_r));
- }
- if (flags & NDR_OUT) {
- struct ndr_push *_ndr_info;
- _r.in.handle = r->in.handle;
- _r.in.value_name= r->in.value_name;
- _r.in.offered = r->in.offered;
- _r.out.type = r->out.type;
- _r.out.data = data_blob(NULL, 0);
- _r.out.needed = r->out.needed;
- _r.out.result = r->out.result;
- {
- struct __spoolss_GetPrinterData __r;
- _ndr_info = ndr_push_init_ctx(ndr, ndr->iconv_convenience);
- NDR_ERR_HAVE_NO_MEMORY(_ndr_info);
- _ndr_info->flags= ndr->flags;
- __r.in.type = r->out.type;
- __r.out.data = r->out.data;
- NDR_CHECK(ndr_push___spoolss_GetPrinterData(_ndr_info, flags, &__r));
- if (r->in.offered > _ndr_info->offset) {
- uint32_t _padding_len = r->in.offered - _ndr_info->offset;
- NDR_CHECK(ndr_push_zero(_ndr_info, _padding_len));
- }
- _r.out.data = ndr_push_blob(_ndr_info);
- }
- NDR_CHECK(ndr_push__spoolss_GetPrinterData(ndr, flags, &_r));
- }
- return NDR_ERR_SUCCESS;
-}
-
-enum ndr_err_code ndr_pull_spoolss_GetPrinterData(struct ndr_pull *ndr, int flags, struct spoolss_GetPrinterData *r)
-{
- struct _spoolss_GetPrinterData _r;
- if (flags & NDR_IN) {
- ZERO_STRUCT(r->out);
-
- _r.in.handle = r->in.handle;
- _r.in.value_name= r->in.value_name;
- _r.in.offered = r->in.offered;
- _r.out.type = r->out.type;
- _r.out.data = data_blob(NULL,0),
- _r.out.needed = r->out.needed;
- NDR_CHECK(ndr_pull__spoolss_GetPrinterData(ndr, flags, &_r));
- r->in.handle = _r.in.handle;
- r->in.value_name= _r.in.value_name;
- r->in.offered = _r.in.offered;
- r->out.needed = _r.out.needed;
- }
- if (flags & NDR_OUT) {
- _r.in.handle = r->in.handle;
- _r.in.value_name= r->in.value_name;
- _r.in.offered = r->in.offered;
- _r.out.type = r->out.type;
- _r.out.data = data_blob(NULL,0),
- _r.out.needed = r->out.needed;
- _r.out.result = r->out.result;
- NDR_CHECK(ndr_pull__spoolss_GetPrinterData(ndr, flags, &_r));
- r->out.type = _r.out.type;
- ZERO_STRUCT(r->out.data);
- r->out.needed = _r.out.needed;
- r->out.result = _r.out.result;
- if (_r.out.data.length != r->in.offered) {
- return ndr_pull_error(ndr, NDR_ERR_BUFSIZE,
- "SPOOLSS Buffer: r->in.offered[%u] doesn't match length of out buffer[%u]",
- (unsigned)r->in.offered, (unsigned)_r.out.data.length);
- }
- if (_r.out.data.length > 0 && r->out.needed <= _r.out.data.length) {
- struct __spoolss_GetPrinterData __r;
- struct ndr_pull *_ndr_data = ndr_pull_init_blob(&_r.out.data, ndr, ndr->iconv_convenience);
- NDR_ERR_HAVE_NO_MEMORY(_ndr_data);
- _ndr_data->flags= ndr->flags;
- __r.in.type = r->out.type;
- __r.out.data = r->out.data;
- NDR_CHECK(ndr_pull___spoolss_GetPrinterData(_ndr_data, flags, &__r));
- r->out.data = __r.out.data;
- } else {
- r->out.type = SPOOLSS_PRINTER_DATA_TYPE_NULL;
- }
- }
- return NDR_ERR_SUCCESS;
-}
-
-/*
- spoolss_SetPrinterData
-*/
-enum ndr_err_code ndr_push_spoolss_SetPrinterData(struct ndr_push *ndr, int flags, const struct spoolss_SetPrinterData *r)
-{
- struct _spoolss_SetPrinterData _r;
- if (flags & NDR_IN) {
- struct ndr_push *_ndr_data;
- struct __spoolss_SetPrinterData __r;
- DATA_BLOB _data_blob_data;
-
- _ndr_data = ndr_push_init_ctx(ndr, ndr->iconv_convenience);
- NDR_ERR_HAVE_NO_MEMORY(_ndr_data);
- _ndr_data->flags= ndr->flags;
-
- __r.in.type = r->in.type;
- __r.out.data = r->in.data;
- NDR_CHECK(ndr_push___spoolss_SetPrinterData(_ndr_data, NDR_OUT, &__r));
- _data_blob_data = ndr_push_blob(_ndr_data);
-
- _r.in.handle = r->in.handle;
- _r.in.value_name= r->in.value_name;
- _r.in.type = r->in.type;
- _r.in.data = _data_blob_data;
- _r.in._offered = _data_blob_data.length;
- _r.out.result = r->out.result;
- NDR_CHECK(ndr_push__spoolss_SetPrinterData(ndr, flags, &_r));
- }
- if (flags & NDR_OUT) {
- _r.in.handle = r->in.handle;
- _r.in.value_name= r->in.value_name;
- _r.in.type = r->in.type;
- _r.in.data = data_blob(NULL,0),
- _r.in._offered = r->in._offered;
- _r.out.result = r->out.result;
- NDR_CHECK(ndr_push__spoolss_SetPrinterData(ndr, flags, &_r));
- }
- return NDR_ERR_SUCCESS;
-}
-
-uint32_t _ndr_size_spoolss_DeviceMode(struct spoolss_DeviceMode *devmode, struct smb_iconv_convenience *ic, uint32_t flags)
-{
- if (!devmode) return 0;
- return ndr_size_spoolss_DeviceMode(devmode,ic,flags);
-}
diff --git a/source4/librpc/ndr/ndr_string.c b/source4/librpc/ndr/ndr_string.c
index 265fa68b48..a2fcdeae29 100644
--- a/source4/librpc/ndr/ndr_string.c
+++ b/source4/librpc/ndr/ndr_string.c
@@ -595,6 +595,29 @@ _PUBLIC_ void ndr_print_string_array(struct ndr_print *ndr, const char *name, co
ndr->depth--;
}
+_PUBLIC_ size_t ndr_size_string_array(const char **a, uint32_t count, int flags)
+{
+ uint32_t i;
+ size_t size = 0;
+
+ switch (flags & LIBNDR_STRING_FLAGS) {
+ case LIBNDR_FLAG_STR_NULLTERM:
+ for (i = 0; i < count; i++) {
+ size += strlen_m_term(a[i]);
+ }
+ break;
+ case LIBNDR_FLAG_STR_NOTERM:
+ for (i = 0; i < count; i++) {
+ size += strlen_m(a[i]);
+ }
+ break;
+ default:
+ return 0;
+ }
+
+ return size;
+}
+
/**
* Return number of elements in a string including the last (zeroed) element
*/
diff --git a/source4/librpc/ndr/py_security.c b/source4/librpc/ndr/py_security.c
index 93e4a093f3..f89263bba3 100644
--- a/source4/librpc/ndr/py_security.c
+++ b/source4/librpc/ndr/py_security.c
@@ -41,29 +41,29 @@ static void PyType_AddMethods(PyTypeObject *type, PyMethodDef *methods)
}
}
-static int py_dom_sid_cmp(PyObject *self, PyObject *py_other)
+static int py_dom_sid_cmp(PyObject *py_self, PyObject *py_other)
{
- struct dom_sid *this = py_talloc_get_ptr(self), *other;
+ struct dom_sid *self = py_talloc_get_ptr(py_self), *other;
other = py_talloc_get_ptr(py_other);
if (other == NULL)
return -1;
- return dom_sid_compare(this, other);
+ return dom_sid_compare(self, other);
}
-static PyObject *py_dom_sid_str(PyObject *self)
+static PyObject *py_dom_sid_str(PyObject *py_self)
{
- struct dom_sid *this = py_talloc_get_ptr(self);
- char *str = dom_sid_string(NULL, this);
+ struct dom_sid *self = py_talloc_get_ptr(py_self);
+ char *str = dom_sid_string(NULL, self);
PyObject *ret = PyString_FromString(str);
talloc_free(str);
return ret;
}
-static PyObject *py_dom_sid_repr(PyObject *self)
+static PyObject *py_dom_sid_repr(PyObject *py_self)
{
- struct dom_sid *this = py_talloc_get_ptr(self);
- char *str = dom_sid_string(NULL, this);
+ struct dom_sid *self = py_talloc_get_ptr(py_self);
+ char *str = dom_sid_string(NULL, self);
PyObject *ret = PyString_FromFormat("dom_sid('%s')", str);
talloc_free(str);
return ret;
diff --git a/source4/librpc/rpc/dcerpc.c b/source4/librpc/rpc/dcerpc.c
index 45c4e78cf1..7a568d3c9e 100644
--- a/source4/librpc/rpc/dcerpc.c
+++ b/source4/librpc/rpc/dcerpc.c
@@ -653,9 +653,9 @@ static void dcerpc_bind_recv_handler(struct rpc_request *req,
handle timeouts of individual dcerpc requests
*/
static void dcerpc_timeout_handler(struct tevent_context *ev, struct tevent_timer *te,
- struct timeval t, void *private)
+ struct timeval t, void *private_data)
{
- struct rpc_request *req = talloc_get_type(private, struct rpc_request);
+ struct rpc_request *req = talloc_get_type(private_data, struct rpc_request);
if (req->ignore_timeout) {
dcerpc_req_dequeue(req);
diff --git a/source4/librpc/rpc/dcerpc_connect.c b/source4/librpc/rpc/dcerpc_connect.c
index 9b8503c04b..0f9fbe0abc 100644
--- a/source4/librpc/rpc/dcerpc_connect.c
+++ b/source4/librpc/rpc/dcerpc_connect.c
@@ -709,9 +709,9 @@ static void continue_pipe_auth(struct composite_context *ctx)
handle timeouts of a dcerpc connect
*/
static void dcerpc_connect_timeout_handler(struct tevent_context *ev, struct tevent_timer *te,
- struct timeval t, void *private)
+ struct timeval t, void *private_data)
{
- struct composite_context *c = talloc_get_type(private, struct composite_context);
+ struct composite_context *c = talloc_get_type(private_data, struct composite_context);
composite_error(c, NT_STATUS_IO_TIMEOUT);
}
diff --git a/source4/librpc/rpc/dcerpc_smb.c b/source4/librpc/rpc/dcerpc_smb.c
index 312a44a5f0..013a8578e6 100644
--- a/source4/librpc/rpc/dcerpc_smb.c
+++ b/source4/librpc/rpc/dcerpc_smb.c
@@ -84,7 +84,7 @@ static void smb_read_callback(struct smbcli_request *req)
uint16_t frag_length;
NTSTATUS status;
- state = talloc_get_type(req->async.private, struct smb_read_state);
+ state = talloc_get_type(req->async.private_data, struct smb_read_state);
smb = talloc_get_type(state->c->transport.private_data, struct smb_private);
io = state->io;
@@ -133,7 +133,7 @@ static void smb_read_callback(struct smbcli_request *req)
}
state->req->async.fn = smb_read_callback;
- state->req->async.private = state;
+ state->req->async.private_data = state;
}
/*
@@ -185,7 +185,7 @@ static NTSTATUS send_read_request_continue(struct dcerpc_connection *c, DATA_BLO
}
req->async.fn = smb_read_callback;
- req->async.private = state;
+ req->async.private_data = state;
state->req = req;
@@ -221,7 +221,7 @@ struct smb_trans_state {
*/
static void smb_trans_callback(struct smbcli_request *req)
{
- struct smb_trans_state *state = (struct smb_trans_state *)req->async.private;
+ struct smb_trans_state *state = (struct smb_trans_state *)req->async.private_data;
struct dcerpc_connection *c = state->c;
NTSTATUS status;
@@ -293,7 +293,7 @@ static NTSTATUS smb_send_trans_request(struct dcerpc_connection *c, DATA_BLOB *b
}
state->req->async.fn = smb_trans_callback;
- state->req->async.private = state;
+ state->req->async.private_data = state;
talloc_steal(state, state->req);
@@ -305,7 +305,7 @@ static NTSTATUS smb_send_trans_request(struct dcerpc_connection *c, DATA_BLOB *b
*/
static void smb_write_callback(struct smbcli_request *req)
{
- struct dcerpc_connection *c = (struct dcerpc_connection *)req->async.private;
+ struct dcerpc_connection *c = (struct dcerpc_connection *)req->async.private_data;
if (!NT_STATUS_IS_OK(req->status)) {
DEBUG(0,("dcerpc_smb: write callback error\n"));
@@ -351,7 +351,7 @@ static NTSTATUS smb_send_request(struct dcerpc_connection *c, DATA_BLOB *blob,
}
req->async.fn = smb_write_callback;
- req->async.private = c;
+ req->async.private_data = c;
if (trigger_read) {
send_read_request(c);
@@ -501,7 +501,7 @@ struct composite_context *dcerpc_pipe_open_smb_send(struct dcerpc_pipe *p,
static void pipe_open_recv(struct smbcli_request *req)
{
- struct pipe_open_smb_state *state = talloc_get_type(req->async.private,
+ struct pipe_open_smb_state *state = talloc_get_type(req->async.private_data,
struct pipe_open_smb_state);
struct composite_context *ctx = state->ctx;
struct dcerpc_connection *c = state->c;
diff --git a/source4/librpc/rpc/dcerpc_sock.c b/source4/librpc/rpc/dcerpc_sock.c
index 689249288f..64a5b92e90 100644
--- a/source4/librpc/rpc/dcerpc_sock.c
+++ b/source4/librpc/rpc/dcerpc_sock.c
@@ -85,9 +85,9 @@ static void sock_dead(struct dcerpc_connection *p, NTSTATUS status)
/*
handle socket recv errors
*/
-static void sock_error_handler(void *private, NTSTATUS status)
+static void sock_error_handler(void *private_data, NTSTATUS status)
{
- struct dcerpc_connection *p = talloc_get_type(private,
+ struct dcerpc_connection *p = talloc_get_type(private_data,
struct dcerpc_connection);
sock_dead(p, status);
}
@@ -95,7 +95,7 @@ static void sock_error_handler(void *private, NTSTATUS status)
/*
check if a blob is a complete packet
*/
-static NTSTATUS sock_complete_packet(void *private, DATA_BLOB blob, size_t *size)
+static NTSTATUS sock_complete_packet(void *private_data, DATA_BLOB blob, size_t *size)
{
if (blob.length < DCERPC_FRAG_LEN_OFFSET+2) {
return STATUS_MORE_ENTRIES;
@@ -110,9 +110,9 @@ static NTSTATUS sock_complete_packet(void *private, DATA_BLOB blob, size_t *size
/*
process recv requests
*/
-static NTSTATUS sock_process_recv(void *private, DATA_BLOB blob)
+static NTSTATUS sock_process_recv(void *private_data, DATA_BLOB blob)
{
- struct dcerpc_connection *p = talloc_get_type(private,
+ struct dcerpc_connection *p = talloc_get_type(private_data,
struct dcerpc_connection);
struct sock_private *sock = (struct sock_private *)p->transport.private_data;
sock->pending_reads--;
@@ -127,9 +127,9 @@ static NTSTATUS sock_process_recv(void *private, DATA_BLOB blob)
called when a IO is triggered by the events system
*/
static void sock_io_handler(struct tevent_context *ev, struct tevent_fd *fde,
- uint16_t flags, void *private)
+ uint16_t flags, void *private_data)
{
- struct dcerpc_connection *p = talloc_get_type(private,
+ struct dcerpc_connection *p = talloc_get_type(private_data,
struct dcerpc_connection);
struct sock_private *sock = (struct sock_private *)p->transport.private_data;
diff --git a/source4/librpc/tests/test_ndrdump.sh b/source4/librpc/tests/test_ndrdump.sh
index 511856061c..dccf86df88 100755
--- a/source4/librpc/tests/test_ndrdump.sh
+++ b/source4/librpc/tests/test_ndrdump.sh
@@ -8,8 +8,8 @@
failed=0
-samba4bindir=`dirname $0`/../../bin
-ndrdump=$samba4bindir/ndrdump
+samba4bindir="$BUILDDIR/bin"
+ndrdump="$samba4bindir/ndrdump$EXEEXT"
files=`dirname $0`/
testit "ndrdump with in" $VALGRIND $ndrdump samr samr_CreateUser in $files/samr-CreateUser-in.dat $@ || failed=`expr $failed + 1`