From 9727b061f330ba8f500a29bf4b94992e2bceffbc Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 21 May 2006 12:58:39 +0000 Subject: r15776: Don't generate ref pointers in Samba4-generated code. There is no point in having pointers for outgoing data when you can already modify the top-level element. This can be overridden (temporarily) by specifying the new "keepref" attribute. Once we've removed keepref from all IDL files, I'll remove this attribute as well. (This used to be commit bdc6dd37503ced8322a671d225122ccffbb8bfec) --- source4/librpc/idl/atsvc.idl | 5 +++-- source4/librpc/idl/dcom.idl | 23 +++++++++++++++-------- source4/librpc/idl/dfs.idl | 3 ++- source4/librpc/idl/drsuapi.idl | 3 ++- source4/librpc/idl/echo.idl | 3 ++- source4/librpc/idl/efs.idl | 3 ++- source4/librpc/idl/epmapper.idl | 3 ++- source4/librpc/idl/eventlog.idl | 3 ++- source4/librpc/idl/initshutdown.idl | 3 ++- source4/librpc/idl/irpc.idl | 3 ++- source4/librpc/idl/lsa.idl | 3 ++- source4/librpc/idl/netlogon.idl | 3 ++- source4/librpc/idl/orpc.idl | 3 ++- source4/librpc/idl/oxidresolver.idl | 3 ++- source4/librpc/idl/remact.idl | 3 ++- source4/librpc/idl/rot.idl | 3 ++- source4/librpc/idl/samr.idl | 3 ++- source4/librpc/idl/spoolss.idl | 3 ++- source4/librpc/idl/srvsvc.idl | 3 ++- source4/librpc/idl/svcctl.idl | 3 ++- source4/librpc/idl/unixinfo.idl | 3 ++- source4/librpc/idl/winreg.idl | 7 ++++--- source4/librpc/idl/wkssvc.idl | 3 ++- source4/librpc/ndr/ndr_basic.c | 5 +---- 24 files changed, 63 insertions(+), 37 deletions(-) (limited to 'source4/librpc') diff --git a/source4/librpc/idl/atsvc.idl b/source4/librpc/idl/atsvc.idl index d58a719651..3dd5cb6805 100644 --- a/source4/librpc/idl/atsvc.idl +++ b/source4/librpc/idl/atsvc.idl @@ -6,7 +6,8 @@ version(1.0), pointer_default(unique), helpstring("Microsoft AT-Scheduler Service"), - endpoint("ncacn_np:[\\pipe\\atsvc]", "ncalrpc:") + endpoint("ncacn_np:[\\pipe\\atsvc]", "ncalrpc:"), + keepref ] interface atsvc { typedef [bitmap32bit] bitmap { @@ -73,7 +74,7 @@ /* Function: 0x00 */ NTSTATUS atsvc_JobAdd( [in,unique,string,charset(UTF16)] uint16 *servername, - [in] atsvc_JobInfo *job_info, + [in,keepref] atsvc_JobInfo *job_info, [out] uint32 job_id ); diff --git a/source4/librpc/idl/dcom.idl b/source4/librpc/idl/dcom.idl index ce10c98c0a..2a2b9ad8b1 100644 --- a/source4/librpc/idl/dcom.idl +++ b/source4/librpc/idl/dcom.idl @@ -18,7 +18,8 @@ object, uuid("00000000-0000-0000-C000-000000000046"), pointer_default(unique), - helpstring("Base interface for all COM interfaces") + helpstring("Base interface for all COM interfaces"), + keepref ] interface IUnknown { @@ -42,7 +43,8 @@ interface IUnknown [ object, uuid("00000001-0000-0000-C000-000000000046"), - pointer_default(unique) + pointer_default(unique), + keepref ] interface IClassFactory : IUnknown { [local] WERROR CreateInstance([in,unique] MInterfacePointer *pUnknown, @@ -69,7 +71,8 @@ interface IUnknown uuid("00000131-0000-0000-C000-000000000046"), object, pointer_default(unique), - helpstring("Remote version of IUnknown") + helpstring("Remote version of IUnknown"), + keepref ] interface IRemUnknown : IUnknown { @@ -169,7 +172,8 @@ interface IRemUnknown : IUnknown [ object, pointer_default(unique), - uuid("00000143-0000-0000-C000-000000000046") + uuid("00000143-0000-0000-C000-000000000046"), + keepref ] interface IRemUnknown2 : IRemUnknown @@ -186,8 +190,9 @@ interface IRemUnknown2 : IRemUnknown [ object, pointer_default(unique), - uuid("00020400-0000-0000-C000-000000000046") - ] interface IDispatch : IUnknown + uuid("00020400-0000-0000-C000-000000000046"), + keepref +] interface IDispatch : IUnknown { /*****************/ /* Function 0x03 */ @@ -254,7 +259,8 @@ interface IRemUnknown2 : IRemUnknown uuid(DA23F6DB-6F45-466C-9EED-0B65286F2D78), helpstring("ICoffeeMachine Interface"), pointer_default(unique), - object + object, + keepref ] interface ICoffeeMachine : IUnknown { WERROR MakeCoffee([in,string,charset(UTF16)] uint16 *flavor); @@ -272,7 +278,8 @@ interface IRemUnknown2 : IRemUnknown object, pointer_default(unique), uuid("0000000C-0000-0000-C000-000000000046"), - helpstring("Stream") + helpstring("Stream"), + keepref ] interface IStream : IUnknown { diff --git a/source4/librpc/idl/dfs.idl b/source4/librpc/idl/dfs.idl index ef3d2ca604..a39bfe6aa0 100644 --- a/source4/librpc/idl/dfs.idl +++ b/source4/librpc/idl/dfs.idl @@ -5,7 +5,8 @@ [ uuid("4fc742e0-4a10-11cf-8273-00aa004ae673"), version(3.0), pointer_default(unique), - helpstring("Settings for Microsoft Distributed File System") + helpstring("Settings for Microsoft Distributed File System"), + keepref ] interface netdfs { /******************/ diff --git a/source4/librpc/idl/drsuapi.idl b/source4/librpc/idl/drsuapi.idl index 3668ddab7e..f106c4ce3a 100644 --- a/source4/librpc/idl/drsuapi.idl +++ b/source4/librpc/idl/drsuapi.idl @@ -7,7 +7,8 @@ authservice("ldap"), helpstring("Active Directory Replication"), pointer_default(unique), - depends(security,misc) + depends(security,misc), + keepref ] interface drsuapi { diff --git a/source4/librpc/idl/echo.idl b/source4/librpc/idl/echo.idl index 7b80e3e296..cda29685a1 100644 --- a/source4/librpc/idl/echo.idl +++ b/source4/librpc/idl/echo.idl @@ -4,7 +4,8 @@ endpoint("ncacn_np:[\\pipe\\rpcecho]", "ncacn_ip_tcp:", "ncalrpc:"), pointer_default(unique), version(1.0), - helpstring("Simple echo pipe") + helpstring("Simple echo pipe"), + keepref ] interface rpcecho { diff --git a/source4/librpc/idl/efs.idl b/source4/librpc/idl/efs.idl index 75d997a018..83c6cad19f 100644 --- a/source4/librpc/idl/efs.idl +++ b/source4/librpc/idl/efs.idl @@ -7,7 +7,8 @@ uuid("c681d488-d850-11d0-8c52-00c04fd90f7e"), version(1.0), depends(security), - pointer_default(unique) + pointer_default(unique), + keepref ] interface efs { diff --git a/source4/librpc/idl/epmapper.idl b/source4/librpc/idl/epmapper.idl index 223883c366..e913209cf1 100644 --- a/source4/librpc/idl/epmapper.idl +++ b/source4/librpc/idl/epmapper.idl @@ -15,7 +15,8 @@ http://www.opengroup.org/onlinepubs/9629399/chap6.htm#tagcjh_11_02_03_01: bindin "ncalrpc:[EPMAPPER]"), helpstring("EndPoint Mapper"), pointer_default_top(sptr), - pointer_default(sptr) + pointer_default(sptr), + keepref ] interface epmapper { diff --git a/source4/librpc/idl/eventlog.idl b/source4/librpc/idl/eventlog.idl index 38f4a88e28..c8a146b272 100644 --- a/source4/librpc/idl/eventlog.idl +++ b/source4/librpc/idl/eventlog.idl @@ -7,7 +7,8 @@ version(0.0), depends(lsa,security), pointer_default(unique), - helpstring("Event Logger") + helpstring("Event Logger"), + keepref ] interface eventlog { typedef bitmap { diff --git a/source4/librpc/idl/initshutdown.idl b/source4/librpc/idl/initshutdown.idl index 50d49637c2..8555ed0c5c 100644 --- a/source4/librpc/idl/initshutdown.idl +++ b/source4/librpc/idl/initshutdown.idl @@ -9,7 +9,8 @@ version(1.0), endpoint("ncacn_np:[\\pipe\\InitShutdown]"), pointer_default(unique), - helpstring("Init shutdown service") + helpstring("Init shutdown service"), + keepref ] interface initshutdown { typedef struct { diff --git a/source4/librpc/idl/irpc.idl b/source4/librpc/idl/irpc.idl index 5614608bd7..a566a99bfc 100644 --- a/source4/librpc/idl/irpc.idl +++ b/source4/librpc/idl/irpc.idl @@ -6,7 +6,8 @@ [ uuid("e770c620-0b06-4b5e-8d87-a26e20f28340"), version(1.0), pointer_default(unique), - depends(security,nbt) + depends(security,nbt), + keepref ] interface irpc { typedef bitmap { diff --git a/source4/librpc/idl/lsa.idl b/source4/librpc/idl/lsa.idl index 454f73afeb..0953c6d025 100644 --- a/source4/librpc/idl/lsa.idl +++ b/source4/librpc/idl/lsa.idl @@ -9,7 +9,8 @@ endpoint("ncacn_np:[\\pipe\\lsarpc]","ncacn_np:[\\pipe\\lsass]", "ncacn_ip_tcp:", "ncalrpc:"), pointer_default(unique), helpstring("Local Security Authority"), - depends(security) + depends(security), + keepref ] interface lsarpc { declare bitmap security_secinfo; diff --git a/source4/librpc/idl/netlogon.idl b/source4/librpc/idl/netlogon.idl index c4a0f97613..95289b7ea9 100644 --- a/source4/librpc/idl/netlogon.idl +++ b/source4/librpc/idl/netlogon.idl @@ -12,7 +12,8 @@ endpoint("ncacn_np:[\\pipe\\netlogon]","ncacn_ip_tcp:","ncalrpc:"), pointer_default(unique), pointer_default_top(unique), - depends(lsa,samr,security) + depends(lsa,samr,security), + keepref ] interface netlogon diff --git a/source4/librpc/idl/orpc.idl b/source4/librpc/idl/orpc.idl index c1faefd3b1..c59cc9d3cb 100644 --- a/source4/librpc/idl/orpc.idl +++ b/source4/librpc/idl/orpc.idl @@ -6,7 +6,8 @@ */ [ - pointer_default(unique) + pointer_default(unique), + keepref ] interface ObjectRpcBaseTypes { diff --git a/source4/librpc/idl/oxidresolver.idl b/source4/librpc/idl/oxidresolver.idl index d3f3078a0d..835b848a45 100644 --- a/source4/librpc/idl/oxidresolver.idl +++ b/source4/librpc/idl/oxidresolver.idl @@ -16,7 +16,8 @@ endpoint("ncacn_np:[\\pipe\\epmapper]", "ncacn_ip_tcp:[135]", "ncalrpc:"), pointer_default(unique), pointer_default_top(unique), - depends(dcom, orpc) + depends(dcom, orpc), + keepref ] interface IOXIDResolver { diff --git a/source4/librpc/idl/remact.idl b/source4/librpc/idl/remact.idl index a54ca7781d..2f8baf926a 100644 --- a/source4/librpc/idl/remact.idl +++ b/source4/librpc/idl/remact.idl @@ -8,7 +8,8 @@ pointer_default(unique), pointer_default_top(unique), endpoint("ncalrpc:", "ncacn_ip_tcp:[135]", "ncacn_np:[\\pipe\\epmapper]"), - depends(dcom,orpc) + depends(dcom,orpc), + keepref ] interface IRemoteActivation { diff --git a/source4/librpc/idl/rot.idl b/source4/librpc/idl/rot.idl index 5851466c79..27c7836635 100644 --- a/source4/librpc/idl/rot.idl +++ b/source4/librpc/idl/rot.idl @@ -5,7 +5,8 @@ pointer_default_top(unique), depends(orpc), endpoint("ncacn_np:[\\pipe\\epmapper]", "ncacn_ip_tcp:[135]", - "ncalrpc:[EPMAPPER]") + "ncalrpc:[EPMAPPER]"), + keepref ] interface rot { WERROR rot_add ( diff --git a/source4/librpc/idl/samr.idl b/source4/librpc/idl/samr.idl index c9d21dba08..370eb728bd 100644 --- a/source4/librpc/idl/samr.idl +++ b/source4/librpc/idl/samr.idl @@ -13,7 +13,8 @@ endpoint("ncacn_np:[\\pipe\\samr]","ncacn_ip_tcp:", "ncalrpc:"), pointer_default(unique), pointer_default_top(unique), - depends(misc,lsa,security) + depends(misc,lsa,security), + keepref ] interface samr { declare bitmap security_secinfo; diff --git a/source4/librpc/idl/spoolss.idl b/source4/librpc/idl/spoolss.idl index 93ce3c3f36..b09690b278 100644 --- a/source4/librpc/idl/spoolss.idl +++ b/source4/librpc/idl/spoolss.idl @@ -11,7 +11,8 @@ pointer_default_top(unique), helpstring("Spooler SubSystem"), depends(security), - helper("librpc/ndr/ndr_spoolss_buf.h") + helper("librpc/ndr/ndr_spoolss_buf.h"), + keepref ] interface spoolss { typedef struct { diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index 6405736c9f..845969a027 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -10,7 +10,8 @@ pointer_default(unique), pointer_default_top(unique), helpstring("Server Service"), - depends(security,svcctl) + depends(security,svcctl), + keepref ] interface srvsvc { declare bitmap svcctl_ServerType; diff --git a/source4/librpc/idl/svcctl.idl b/source4/librpc/idl/svcctl.idl index 27172f85df..f77e4d4276 100644 --- a/source4/librpc/idl/svcctl.idl +++ b/source4/librpc/idl/svcctl.idl @@ -9,7 +9,8 @@ pointer_default(unique), pointer_default_top(unique), endpoint("ncacn_np:[\\pipe\\svcctl]", "ncalrpc:"), - helpstring("Service Control") + helpstring("Service Control"), + keepref ] interface svcctl { typedef struct { diff --git a/source4/librpc/idl/unixinfo.idl b/source4/librpc/idl/unixinfo.idl index 078862f444..2b5b60908f 100644 --- a/source4/librpc/idl/unixinfo.idl +++ b/source4/librpc/idl/unixinfo.idl @@ -7,7 +7,8 @@ endpoint("ncacn_np:[\\pipe\\unixinfo]", "ncacn_ip_tcp:", "ncalrpc:"), pointer_default(unique), helpstring("Unixinfo specific stuff"), - depends(security) + depends(security), + keepref ] interface unixinfo { /******************/ diff --git a/source4/librpc/idl/winreg.idl b/source4/librpc/idl/winreg.idl index 1ecb98d3b0..93c3c12db5 100644 --- a/source4/librpc/idl/winreg.idl +++ b/source4/librpc/idl/winreg.idl @@ -9,7 +9,8 @@ pointer_default(unique), pointer_default_top(unique), helpstring("Remote Registry Service"), - depends(lsa,initshutdown,security) + depends(lsa,initshutdown,security), + keepref ] interface winreg { declare bitmap security_secinfo; @@ -205,8 +206,8 @@ /* Function: 0x10 */ WERROR winreg_QueryInfoKey( [in,ref] policy_handle *handle, - [in] winreg_String class, - [out] winreg_String class, + [in] winreg_String class_in, + [out] winreg_String *class_out, [out] uint32 num_subkeys, [out] uint32 max_subkeylen, [out] uint32 max_subkeysize, diff --git a/source4/librpc/idl/wkssvc.idl b/source4/librpc/idl/wkssvc.idl index d658091c47..a085265a41 100644 --- a/source4/librpc/idl/wkssvc.idl +++ b/source4/librpc/idl/wkssvc.idl @@ -7,7 +7,8 @@ pointer_default(unique), pointer_default_top(unique), helpstring("Workstation Service"), - depends(srvsvc) + depends(srvsvc), + keepref ] interface wkssvc { declare [v1_enum] enum srvsvc_PlatformId; diff --git a/source4/librpc/ndr/ndr_basic.c b/source4/librpc/ndr/ndr_basic.c index 197fd44895..f4ba786865 100644 --- a/source4/librpc/ndr/ndr_basic.c +++ b/source4/librpc/ndr/ndr_basic.c @@ -494,11 +494,8 @@ _PUBLIC_ NTSTATUS ndr_push_sptr_ptr(struct ndr_push *ndr, const void *p) /* push always a 0, if a pointer is NULL it's a fatal error */ -_PUBLIC_ NTSTATUS ndr_push_ref_ptr(struct ndr_push *ndr, const void *p) +_PUBLIC_ NTSTATUS ndr_push_ref_ptr(struct ndr_push *ndr) { - if (p == NULL) { - return NT_STATUS_INVALID_PARAMETER_MIX; - } return ndr_push_uint32(ndr, NDR_SCALARS, 0xAEF1AEF1); } -- cgit