From cd9057a0bb90bef6d31051f176849b6a3543a376 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 18 Sep 2006 21:52:00 +0000 Subject: r18639: Get rid of the keepref support (This used to be commit d1364ef0cd8f1a64f44476476323ab390ac4de48) --- source4/gtk/tools/gwcrontab.c | 16 ++++----- source4/librpc/idl/dcom.idl | 21 ++++-------- source4/librpc/idl/dfs.idl | 3 +- source4/librpc/idl/drsuapi.idl | 3 +- source4/librpc/idl/echo.idl | 3 +- source4/librpc/idl/epmapper.idl | 3 +- source4/librpc/idl/eventlog.idl | 3 +- source4/librpc/idl/frsapi.idl | 3 +- source4/librpc/idl/frsrpc.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 | 22 ++++++------- source4/librpc/idl/remact.idl | 17 +++++----- source4/librpc/idl/rot.idl | 9 +++-- 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 | 3 +- source4/librpc/idl/wkssvc.idl | 3 +- source4/pidl/lib/Parse/Pidl/NDR.pm | 23 ------------- source4/pidl/lib/Parse/Pidl/Samba4/Header.pm | 6 +--- source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm | 42 +++++++++--------------- source4/torture/rpc/atsvc.c | 8 ++--- source4/torture/rpc/oxidresolve.c | 8 ++--- 29 files changed, 80 insertions(+), 149 deletions(-) diff --git a/source4/gtk/tools/gwcrontab.c b/source4/gtk/tools/gwcrontab.c index 8826faa100..8f1c56ff76 100644 --- a/source4/gtk/tools/gwcrontab.c +++ b/source4/gtk/tools/gwcrontab.c @@ -49,7 +49,7 @@ static void update_joblist(void) ctr.entries_read = 0; ctr.first_entry = NULL; r.in.servername = dcerpc_server_name(at_pipe); - r.in.ctr = ctr; + r.in.ctr = r.out.ctr = &ctr; r.in.preferred_max_len = 0xffffffff; r.in.resume_handle = r.out.resume_handle = &resume_handle; @@ -59,15 +59,15 @@ static void update_joblist(void) return; } - for (i = 0; i < r.out.ctr.entries_read; i++) { + for (i = 0; i < r.out.ctr->entries_read; i++) { GtkTreeIter iter; gtk_list_store_append(store_jobs, &iter); gtk_list_store_set (store_jobs, &iter, - 0, r.out.ctr.first_entry[i].flags, - 1, r.out.ctr.first_entry[i].job_id, - 2, r.out.ctr.first_entry[i].days_of_week, /*FIXME: Nicer format */ - 3, r.out.ctr.first_entry[i].job_time, /* FIXME: Nicer format */ - 4, r.out.ctr.first_entry[i].command, + 0, r.out.ctr->first_entry[i].flags, + 1, r.out.ctr->first_entry[i].job_id, + 2, r.out.ctr->first_entry[i].days_of_week, /*FIXME: Nicer format */ + 3, r.out.ctr->first_entry[i].job_time, /* FIXME: Nicer format */ + 4, r.out.ctr->first_entry[i].command, -1); } @@ -122,7 +122,7 @@ void on_new_activate (GtkMenuItem *menuitem, gpointer user_data) job.flags = 0; /* FIXME */ job.command = gtk_entry_get_text(GTK_ENTRY(entry_cmd)); r.in.servername = dcerpc_server_name(at_pipe); - r.in.job_info = job; + r.in.job_info = &job; status = dcerpc_atsvc_JobAdd(at_pipe, mem_ctx, &r); if(!NT_STATUS_IS_OK(status)) { diff --git a/source4/librpc/idl/dcom.idl b/source4/librpc/idl/dcom.idl index 13bdde5aa8..c089cd3c92 100644 --- a/source4/librpc/idl/dcom.idl +++ b/source4/librpc/idl/dcom.idl @@ -18,8 +18,7 @@ object, uuid("00000000-0000-0000-C000-000000000046"), pointer_default(unique), - helpstring("Base interface for all COM interfaces"), - keepref + helpstring("Base interface for all COM interfaces") ] interface IUnknown { @@ -43,8 +42,7 @@ interface IUnknown [ object, uuid("00000001-0000-0000-C000-000000000046"), - pointer_default(unique), - keepref + pointer_default(unique) ] interface IClassFactory : IUnknown { [local] WERROR CreateInstance([in,unique] MInterfacePointer *pUnknown, @@ -71,8 +69,7 @@ interface IUnknown uuid("00000131-0000-0000-C000-000000000046"), object, pointer_default(unique), - helpstring("Remote version of IUnknown"), - keepref + helpstring("Remote version of IUnknown") ] interface IRemUnknown : IUnknown { @@ -172,8 +169,7 @@ interface IRemUnknown : IUnknown [ object, pointer_default(unique), - uuid("00000143-0000-0000-C000-000000000046"), - keepref + uuid("00000143-0000-0000-C000-000000000046") ] interface IRemUnknown2 : IRemUnknown @@ -190,8 +186,7 @@ interface IRemUnknown2 : IRemUnknown [ object, pointer_default(unique), - uuid("00020400-0000-0000-C000-000000000046"), - keepref + uuid("00020400-0000-0000-C000-000000000046") ] interface IDispatch : IUnknown { /*****************/ @@ -259,8 +254,7 @@ interface IRemUnknown2 : IRemUnknown uuid(DA23F6DB-6F45-466C-9EED-0B65286F2D78), helpstring("ICoffeeMachine Interface"), pointer_default(unique), - object, - keepref + object ] interface ICoffeeMachine : IUnknown { WERROR MakeCoffee([in,string,charset(UTF16)] uint16 *flavor); @@ -278,8 +272,7 @@ interface IRemUnknown2 : IRemUnknown object, pointer_default(unique), uuid("0000000C-0000-0000-C000-000000000046"), - helpstring("Stream"), - keepref + helpstring("Stream") ] interface IStream : IUnknown { diff --git a/source4/librpc/idl/dfs.idl b/source4/librpc/idl/dfs.idl index 42d79d0c81..c79f77cce3 100644 --- a/source4/librpc/idl/dfs.idl +++ b/source4/librpc/idl/dfs.idl @@ -5,8 +5,7 @@ [ uuid("4fc742e0-4a10-11cf-8273-00aa004ae673"), version(3.0), pointer_default(unique), - helpstring("Settings for Microsoft Distributed File System"), - keepref + helpstring("Settings for Microsoft Distributed File System") ] interface netdfs { /******************/ diff --git a/source4/librpc/idl/drsuapi.idl b/source4/librpc/idl/drsuapi.idl index f77a5496a0..aa87676c9d 100644 --- a/source4/librpc/idl/drsuapi.idl +++ b/source4/librpc/idl/drsuapi.idl @@ -7,8 +7,7 @@ authservice("ldap"), helpstring("Active Directory Replication"), pointer_default(unique), - depends(security,misc,samr), - keepref + depends(security,misc,samr) ] interface drsuapi { diff --git a/source4/librpc/idl/echo.idl b/source4/librpc/idl/echo.idl index 80123f9922..fa030be761 100644 --- a/source4/librpc/idl/echo.idl +++ b/source4/librpc/idl/echo.idl @@ -4,8 +4,7 @@ endpoint("ncacn_np:[\\pipe\\rpcecho]", "ncacn_ip_tcp:", "ncalrpc:"), pointer_default(unique), version(1.0), - helpstring("Simple echo pipe"), - keepref + helpstring("Simple echo pipe") ] interface rpcecho { diff --git a/source4/librpc/idl/epmapper.idl b/source4/librpc/idl/epmapper.idl index e913209cf1..223883c366 100644 --- a/source4/librpc/idl/epmapper.idl +++ b/source4/librpc/idl/epmapper.idl @@ -15,8 +15,7 @@ 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), - keepref + pointer_default(sptr) ] interface epmapper { diff --git a/source4/librpc/idl/eventlog.idl b/source4/librpc/idl/eventlog.idl index c8a146b272..38f4a88e28 100644 --- a/source4/librpc/idl/eventlog.idl +++ b/source4/librpc/idl/eventlog.idl @@ -7,8 +7,7 @@ version(0.0), depends(lsa,security), pointer_default(unique), - helpstring("Event Logger"), - keepref + helpstring("Event Logger") ] interface eventlog { typedef bitmap { diff --git a/source4/librpc/idl/frsapi.idl b/source4/librpc/idl/frsapi.idl index 579be8c3a6..2c3f3bb9ff 100644 --- a/source4/librpc/idl/frsapi.idl +++ b/source4/librpc/idl/frsapi.idl @@ -3,8 +3,7 @@ version(1.1), endpoint("ncacn_ip_tcp:", "ncalrpc:"), helpstring("File Replication API"), - pointer_default(unique), - keepref + pointer_default(unique) ] interface frsapi { diff --git a/source4/librpc/idl/frsrpc.idl b/source4/librpc/idl/frsrpc.idl index 3fe5e6db22..434c5d490d 100644 --- a/source4/librpc/idl/frsrpc.idl +++ b/source4/librpc/idl/frsrpc.idl @@ -3,8 +3,7 @@ version(1.1), endpoint("ncacn_ip_tcp:", "ncalrpc:"), helpstring("File Replication Service"), - pointer_default(unique), - keepref + pointer_default(unique) ] interface frsrpc { diff --git a/source4/librpc/idl/initshutdown.idl b/source4/librpc/idl/initshutdown.idl index 8555ed0c5c..50d49637c2 100644 --- a/source4/librpc/idl/initshutdown.idl +++ b/source4/librpc/idl/initshutdown.idl @@ -9,8 +9,7 @@ version(1.0), endpoint("ncacn_np:[\\pipe\\InitShutdown]"), pointer_default(unique), - helpstring("Init shutdown service"), - keepref + helpstring("Init shutdown service") ] interface initshutdown { typedef struct { diff --git a/source4/librpc/idl/irpc.idl b/source4/librpc/idl/irpc.idl index a566a99bfc..5614608bd7 100644 --- a/source4/librpc/idl/irpc.idl +++ b/source4/librpc/idl/irpc.idl @@ -6,8 +6,7 @@ [ uuid("e770c620-0b06-4b5e-8d87-a26e20f28340"), version(1.0), pointer_default(unique), - depends(security,nbt), - keepref + depends(security,nbt) ] interface irpc { typedef bitmap { diff --git a/source4/librpc/idl/lsa.idl b/source4/librpc/idl/lsa.idl index f78c36ec59..1e941e6f3b 100644 --- a/source4/librpc/idl/lsa.idl +++ b/source4/librpc/idl/lsa.idl @@ -9,8 +9,7 @@ endpoint("ncacn_np:[\\pipe\\lsarpc]","ncacn_np:[\\pipe\\netlogon]","ncacn_np:[\\pipe\\lsass]", "ncacn_ip_tcp:", "ncalrpc:"), pointer_default(unique), helpstring("Local Security Authority"), - depends(security), - keepref + depends(security) ] interface lsarpc { declare bitmap security_secinfo; diff --git a/source4/librpc/idl/netlogon.idl b/source4/librpc/idl/netlogon.idl index e406d51329..ffceab002d 100644 --- a/source4/librpc/idl/netlogon.idl +++ b/source4/librpc/idl/netlogon.idl @@ -12,8 +12,7 @@ endpoint("ncacn_np:[\\pipe\\netlogon]","ncacn_ip_tcp:","ncalrpc:"), pointer_default(unique), pointer_default_top(unique), - depends(lsa,samr,security), - keepref + depends(lsa,samr,security) ] interface netlogon diff --git a/source4/librpc/idl/orpc.idl b/source4/librpc/idl/orpc.idl index c59cc9d3cb..c1faefd3b1 100644 --- a/source4/librpc/idl/orpc.idl +++ b/source4/librpc/idl/orpc.idl @@ -6,8 +6,7 @@ */ [ - pointer_default(unique), - keepref + pointer_default(unique) ] interface ObjectRpcBaseTypes { diff --git a/source4/librpc/idl/oxidresolver.idl b/source4/librpc/idl/oxidresolver.idl index beeb6a7f4f..12c5947265 100644 --- a/source4/librpc/idl/oxidresolver.idl +++ b/source4/librpc/idl/oxidresolver.idl @@ -16,8 +16,7 @@ endpoint("ncacn_np:[\\pipe\\epmapper]", "ncacn_ip_tcp:[135]", "ncalrpc:"), pointer_default(unique), pointer_default_top(unique), - depends(dcom, orpc), - keepref + depends(dcom, orpc) ] interface IOXIDResolver { @@ -34,8 +33,8 @@ interface IOXIDResolver [in] uint16 cRequestedProtseqs, [in, size_is(cRequestedProtseqs)] uint16 arRequestedProtseqs[], [out] DUALSTRINGARRAY *ppdsaOxidBindings, - [out] IPID pipidRemUnknown, - [out] uint32 pAuthnHint + [out,ref] IPID *pipidRemUnknown, + [out,ref] uint32 *pAuthnHint ); /* Simple ping is used to ping a Set. Client machines use this */ @@ -51,8 +50,7 @@ interface IOXIDResolver /* whole set can subsequently be pinged using SimplePing, */ /* thus reducing network traffic. */ [idempotent] WERROR ComplexPing ( - [in] SETID *SetId, /* In of 0 on first call for new set. */ - [out] SETID SetId, + [in,out,ref] SETID *SetId, /* In of 0 on first call for new set. */ [in] uint16 SequenceNum, [in] uint16 cAddToSet, [in] uint16 cDelFromSet, @@ -60,7 +58,7 @@ interface IOXIDResolver [in, size_is(cAddToSet)] OID AddToSet[], /*remove these OIDs from the set */ [in, size_is(cDelFromSet)] OID DelFromSet[], - [out] uint16 PingBackoffFactor/* 2^factor = multipler */ + [out,ref] uint16 *PingBackoffFactor/* 2^factor = multipler */ ); /* In some cases the client maybe unsure that a particular */ @@ -80,9 +78,9 @@ interface IOXIDResolver [in] uint16 cRequestedProtseqs, [in, size_is(cRequestedProtseqs)] uint16 arRequestedProtseqs[], [out] DUALSTRINGARRAY *pdsaOxidBindings, - [out] IPID ipidRemUnknown, - [out] uint32 AuthnHint, - [out] COMVERSION ComVersion + [out,ref] IPID *ipidRemUnknown, + [out,ref] uint32 *AuthnHint, + [out,ref] COMVERSION *ComVersion ); typedef struct { COMVERSION version; @@ -90,7 +88,7 @@ interface IOXIDResolver } COMINFO; [idempotent] WERROR ServerAlive2 ( - [out] COMINFO info, - [out] DUALSTRINGARRAY dualstring, + [out,ref] COMINFO *info, + [out,ref] DUALSTRINGARRAY *dualstring, [out] uint8 unknown2[3]); } diff --git a/source4/librpc/idl/remact.idl b/source4/librpc/idl/remact.idl index 2f8baf926a..16ac5f60c1 100644 --- a/source4/librpc/idl/remact.idl +++ b/source4/librpc/idl/remact.idl @@ -8,8 +8,7 @@ pointer_default(unique), pointer_default_top(unique), endpoint("ncalrpc:", "ncacn_ip_tcp:[135]", "ncacn_np:[\\pipe\\epmapper]"), - depends(dcom,orpc), - keepref + depends(dcom,orpc) ] interface IRemoteActivation { @@ -25,7 +24,7 @@ interface IRemoteActivation const uint32 MODE_GET_CLASS_OBJECT = 0xffffffff; WERROR RemoteActivation ( [in] ORPCTHIS this, - [out] ORPCTHAT that, + [out,ref] ORPCTHAT *that, [in] GUID Clsid, [in] [string,charset(UTF16)] uint16 *pwszObjectName, [in] MInterfacePointer *pObjectStorage, @@ -35,12 +34,12 @@ interface IRemoteActivation [in,size_is(Interfaces)] GUID *pIIDs, [in] uint16 num_protseqs, [in, size_is(num_protseqs)] uint16 protseq[*], - [out] hyper pOxid, - [out] DUALSTRINGARRAY *pdsaOxidBindings, - [out] GUID ipidRemUnknown, - [out] uint32 AuthnHint, - [out] COMVERSION ServerVersion, - [out] WERROR hr, + [out,ref] hyper *pOxid, + [out,ref] DUALSTRINGARRAY *pdsaOxidBindings, + [out,ref] GUID *ipidRemUnknown, + [out,ref] uint32 *AuthnHint, + [out,ref] COMVERSION *ServerVersion, + [out,ref] WERROR *hr, [out,size_is(Interfaces)] MInterfacePointer *ifaces[], [out,size_is(Interfaces)] WERROR results[] ); diff --git a/source4/librpc/idl/rot.idl b/source4/librpc/idl/rot.idl index 27c7836635..abc210aa35 100644 --- a/source4/librpc/idl/rot.idl +++ b/source4/librpc/idl/rot.idl @@ -5,15 +5,14 @@ pointer_default_top(unique), depends(orpc), endpoint("ncacn_np:[\\pipe\\epmapper]", "ncacn_ip_tcp:[135]", - "ncalrpc:[EPMAPPER]"), - keepref + "ncalrpc:[EPMAPPER]") ] interface rot { WERROR rot_add ( [in] uint32 flags, [in] MInterfacePointer *unk, [in] MInterfacePointer *moniker, - [out] uint32 rotid + [out,ref] uint32 *rotid ); WERROR rot_remove ( @@ -26,7 +25,7 @@ WERROR rot_get_interface_pointer ( [in] MInterfacePointer *moniker, - [out] MInterfacePointer *ip + [out,ref] MInterfacePointer *ip ); WERROR rot_set_modification_time ( @@ -36,7 +35,7 @@ WERROR rot_get_modification_time ( [in] MInterfacePointer *moniker, - [out] NTTIME t + [out,ref] NTTIME *t ); WERROR rot_enum ( diff --git a/source4/librpc/idl/samr.idl b/source4/librpc/idl/samr.idl index a3470ef78c..0f67b3d5fe 100644 --- a/source4/librpc/idl/samr.idl +++ b/source4/librpc/idl/samr.idl @@ -13,8 +13,7 @@ endpoint("ncacn_np:[\\pipe\\samr]","ncacn_ip_tcp:", "ncalrpc:"), pointer_default(unique), pointer_default_top(unique), - depends(misc,lsa,security), - keepref + depends(misc,lsa,security) ] interface samr { declare bitmap security_secinfo; diff --git a/source4/librpc/idl/spoolss.idl b/source4/librpc/idl/spoolss.idl index 02e6ff3f37..3e900c95ce 100644 --- a/source4/librpc/idl/spoolss.idl +++ b/source4/librpc/idl/spoolss.idl @@ -11,8 +11,7 @@ pointer_default_top(unique), helpstring("Spooler SubSystem"), depends(security), - helper("librpc/ndr/ndr_spoolss_buf.h"), - keepref + helper("librpc/ndr/ndr_spoolss_buf.h") ] interface spoolss { typedef struct { diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index 2ebd98fa31..b62a3827d1 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -10,8 +10,7 @@ pointer_default(unique), pointer_default_top(unique), helpstring("Server Service"), - depends(security,svcctl), - keepref + depends(security,svcctl) ] interface srvsvc { declare bitmap svcctl_ServerType; diff --git a/source4/librpc/idl/svcctl.idl b/source4/librpc/idl/svcctl.idl index 97460217f5..57d25efd0d 100644 --- a/source4/librpc/idl/svcctl.idl +++ b/source4/librpc/idl/svcctl.idl @@ -9,8 +9,7 @@ pointer_default(unique), pointer_default_top(unique), endpoint("ncacn_np:[\\pipe\\svcctl]", "ncalrpc:"), - helpstring("Service Control"), - keepref + helpstring("Service Control") ] interface svcctl { typedef struct { diff --git a/source4/librpc/idl/unixinfo.idl b/source4/librpc/idl/unixinfo.idl index 086cfc7486..4b12a3056a 100644 --- a/source4/librpc/idl/unixinfo.idl +++ b/source4/librpc/idl/unixinfo.idl @@ -8,8 +8,7 @@ endpoint("ncacn_np:[\\pipe\\unixinfo]", "ncacn_ip_tcp:", "ncalrpc:"), pointer_default(unique), helpstring("Unixinfo specific stuff"), - depends(security), - keepref + depends(security) ] interface unixinfo { /******************/ diff --git a/source4/librpc/idl/winreg.idl b/source4/librpc/idl/winreg.idl index 04521304e7..03b034b38f 100644 --- a/source4/librpc/idl/winreg.idl +++ b/source4/librpc/idl/winreg.idl @@ -9,8 +9,7 @@ pointer_default(unique), pointer_default_top(unique), helpstring("Remote Registry Service"), - depends(lsa,initshutdown,security), - keepref + depends(lsa,initshutdown,security) ] interface winreg { declare bitmap security_secinfo; diff --git a/source4/librpc/idl/wkssvc.idl b/source4/librpc/idl/wkssvc.idl index a085265a41..d658091c47 100644 --- a/source4/librpc/idl/wkssvc.idl +++ b/source4/librpc/idl/wkssvc.idl @@ -7,8 +7,7 @@ pointer_default(unique), pointer_default_top(unique), helpstring("Workstation Service"), - depends(srvsvc), - keepref + depends(srvsvc) ] interface wkssvc { declare [v1_enum] enum srvsvc_PlatformId; diff --git a/source4/pidl/lib/Parse/Pidl/NDR.pm b/source4/pidl/lib/Parse/Pidl/NDR.pm index f602bd2d68..cd8aa214ff 100644 --- a/source4/pidl/lib/Parse/Pidl/NDR.pm +++ b/source4/pidl/lib/Parse/Pidl/NDR.pm @@ -586,23 +586,6 @@ sub CheckPointerTypes($$) } } -#FIXME: Remove when ref handling in Samba4 is fixed -sub AddKeepRef($) -{ - my $d = shift; - - if ($d->{TYPE} eq "FUNCTION") { - foreach (@{$d->{ELEMENTS}}) { - $_->{PROPERTIES}->{keepref} = 1; - } - } elsif ($d->{TYPE} eq "TYPEDEF" and ($d->{DATA}->{TYPE} eq "STRUCT" - or $d->{DATA}->{TYPE} eq "UNION")) { - foreach (@{$d->{DATA}->{ELEMENTS}}) { - $_->{PROPERTIES}->{keepref} = 1; - } - } -} - sub ParseInterface($) { my $idl = shift; @@ -628,12 +611,10 @@ sub ParseInterface($) if ($d->{TYPE} eq "DECLARE") { push (@declares, $d); } elsif ($d->{TYPE} eq "FUNCTION") { - AddKeepRef($d) if (has_property($idl, "keepref")); push (@functions, ParseFunction($idl, $d, \$opnum)); } elsif ($d->{TYPE} eq "CONST") { push (@consts, ParseConst($idl, $d)); } else { - AddKeepRef($d) if (has_property($idl, "keepref")); push (@types, ParseType($idl, $d)); } } @@ -855,10 +836,6 @@ my %property_list = ( "noheader" => ["ELEMENT"], "charset" => ["ELEMENT"], "length_is" => ["ELEMENT"], - - # temporary (should be removed once we've migrated away from - # relying on ref pointers being there in Samba4's code) - "keepref" => ["ELEMENT","INTERFACE"], ); ##################################################################### diff --git a/source4/pidl/lib/Parse/Pidl/Samba4/Header.pm b/source4/pidl/lib/Parse/Pidl/Samba4/Header.pm index c9487115f5..6fb3ee2eec 100644 --- a/source4/pidl/lib/Parse/Pidl/Samba4/Header.pm +++ b/source4/pidl/lib/Parse/Pidl/Samba4/Header.pm @@ -60,11 +60,7 @@ sub HeaderElement($) } else { HeaderType($element, $element->{TYPE}, ""); pidl " "; - my $numstar = 0; - if (!has_property($element, "ref") or - has_property($element, "keepref")) { - $numstar += $element->{POINTERS}; - } + my $numstar = $element->{POINTERS}; if ($numstar >= 1) { $numstar-- if Parse::Pidl::Typelist::scalar_is_reference($element->{TYPE}); } diff --git a/source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm b/source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm index bbcc9f884e..6124935e67 100644 --- a/source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm +++ b/source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm @@ -593,9 +593,7 @@ sub ParseElementPushLevel pidl "NDR_CHECK(ndr_push_relative_ptr2(ndr, $var_name));"; } } - if ($l->{POINTER_TYPE} ne "ref" or has_property($e, "keepref")) { - $var_name = get_value_of($var_name); - } + $var_name = get_value_of($var_name); ParseElementPushLevel($e, GetNextLevel($e, $l), $ndr, $var_name, $env, 1, 1); if ($l->{POINTER_TYPE} ne "ref") { @@ -675,9 +673,7 @@ sub ParsePtrPush($$$) my ($e,$l,$var_name) = @_; if ($l->{POINTER_TYPE} eq "ref") { - if (has_property($e, "keepref")) { - check_null_pointer(get_value_of($var_name)); - } + check_null_pointer(get_value_of($var_name)); if ($l->{LEVEL} eq "EMBEDDED") { pidl "NDR_CHECK(ndr_push_ref_ptr(ndr));"; } @@ -713,15 +709,13 @@ sub ParseElementPrint($$$) foreach my $l (@{$e->{LEVELS}}) { if ($l->{TYPE} eq "POINTER") { - if ($l->{POINTER_TYPE} ne "ref" or has_property($e, "keepref")) { pidl "ndr_print_ptr(ndr, \"$e->{NAME}\", $var_name);"; pidl "ndr->depth++;"; - if ($l->{POINTER_TYPE} ne "ref") { - pidl "if ($var_name) {"; - indent; - } - $var_name = get_value_of($var_name); + if ($l->{POINTER_TYPE} ne "ref") { + pidl "if ($var_name) {"; + indent; } + $var_name = get_value_of($var_name); } elsif ($l->{TYPE} eq "ARRAY") { my $length; @@ -770,13 +764,11 @@ sub ParseElementPrint($$$) foreach my $l (reverse @{$e->{LEVELS}}) { if ($l->{TYPE} eq "POINTER") { - if ($l->{POINTER_TYPE} ne "ref" or has_property($e, "keepref")) { - if ($l->{POINTER_TYPE} ne "ref") { - deindent; - pidl "}"; - } - pidl "ndr->depth--;"; + if ($l->{POINTER_TYPE} ne "ref") { + deindent; + pidl "}"; } + pidl "ndr->depth--;"; } elsif (($l->{TYPE} eq "ARRAY") and not is_charset_array($e,$l) and not has_fast_array($e,$l)) { @@ -890,7 +882,7 @@ sub ParseMemCtxPullStart($$$) my $next_is_array = ($nl->{TYPE} eq "ARRAY"); my $next_is_string = (($nl->{TYPE} eq "DATA") and ($nl->{DATA_TYPE} eq "string")); - if ($next_is_array or $next_is_string or not has_property($e, "keepref")) { + if ($next_is_array or $next_is_string) { return; } else { $mem_c_flags = "LIBNDR_FLAG_REF_ALLOC"; @@ -916,7 +908,7 @@ sub ParseMemCtxPullEnd($$) my $next_is_array = ($nl->{TYPE} eq "ARRAY"); my $next_is_string = (($nl->{TYPE} eq "DATA") and ($nl->{DATA_TYPE} eq "string")); - if ($next_is_array or $next_is_string or not has_property($e, "keepref")) { + if ($next_is_array or $next_is_string) { return; } else { $mem_r_flags = "LIBNDR_FLAG_REF_ALLOC"; @@ -993,9 +985,7 @@ sub ParseElementPullLevel ParseMemCtxPullStart($e,$l, $var_name); - if ($l->{POINTER_TYPE} ne "ref" or has_property($e, "keepref")) { - $var_name = get_value_of($var_name); - } + $var_name = get_value_of($var_name); ParseElementPullLevel($e,GetNextLevel($e,$l), $ndr, $var_name, $env, 1, 1); ParseMemCtxPullEnd($e,$l); @@ -1099,8 +1089,7 @@ sub ParsePtrPull($$$$) pidl "NDR_CHECK(ndr_pull_ref_ptr($ndr, &_ptr_$e->{NAME}));"; } - if (!$next_is_array and !$next_is_string and - has_property($e, "keepref")) { + if (!$next_is_array and !$next_is_string) { pidl "if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {"; pidl "\tNDR_PULL_ALLOC($ndr, $var_name);"; pidl "}"; @@ -1445,7 +1434,7 @@ sub need_decl_mem_ctx($$) my $next_is_array = ($nl->{TYPE} eq "ARRAY"); my $next_is_string = (($nl->{TYPE} eq "DATA") and ($nl->{DATA_TYPE} eq "string")); - return 0 if ($next_is_array or $next_is_string or not has_property($e, "keepref")); + return 0 if ($next_is_array or $next_is_string); } return 1 if ($l->{TYPE} eq "POINTER"); @@ -2111,7 +2100,6 @@ sub ParseFunctionPull($) next unless (grep(/out/, @{$e->{DIRECTION}})); next unless ($e->{LEVELS}[0]->{TYPE} eq "POINTER" and $e->{LEVELS}[0]->{POINTER_TYPE} eq "ref"); - next unless has_property($e, "keepref"); next if (($e->{LEVELS}[1]->{TYPE} eq "DATA") and ($e->{LEVELS}[1]->{DATA_TYPE} eq "string")); next if (($e->{LEVELS}[1]->{TYPE} eq "ARRAY") diff --git a/source4/torture/rpc/atsvc.c b/source4/torture/rpc/atsvc.c index c1357b53d2..e586a1e98f 100644 --- a/source4/torture/rpc/atsvc.c +++ b/source4/torture/rpc/atsvc.c @@ -75,7 +75,7 @@ static BOOL test_JobEnum(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx) r.in.servername = dcerpc_server_name(p); ctr.entries_read = 0; ctr.first_entry = NULL; - r.in.ctr = ctr; + r.in.ctr = r.out.ctr = &ctr; r.in.preferred_max_len = 0xffffffff; r.in.resume_handle = r.out.resume_handle = &resume_handle; @@ -86,8 +86,8 @@ static BOOL test_JobEnum(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx) return False; } - for (i = 0; i < r.out.ctr.entries_read; i++) { - if (!test_JobGetInfo(p, mem_ctx, r.out.ctr.first_entry[i].job_id)) { + for (i = 0; i < r.out.ctr->entries_read; i++) { + if (!test_JobGetInfo(p, mem_ctx, r.out.ctr->first_entry[i].job_id)) { ret = False; } } @@ -109,7 +109,7 @@ static BOOL test_JobAdd(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx) info.days_of_week = 0x02; /* Tuesday */ info.flags = 0x11; /* periodic, non-interactive */ info.command = "foo.exe"; - r.in.job_info = info; + r.in.job_info = &info; status = dcerpc_atsvc_JobAdd(p, mem_ctx, &r); diff --git a/source4/torture/rpc/oxidresolve.c b/source4/torture/rpc/oxidresolve.c index 11ec5f2749..3643a85485 100644 --- a/source4/torture/rpc/oxidresolve.c +++ b/source4/torture/rpc/oxidresolve.c @@ -47,6 +47,8 @@ static int test_RemoteActivation(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, uin r.in.Interfaces = 1; iids[0] = dcerpc_table_IUnknown.syntax_id.uuid; r.in.pIIDs = iids; + r.out.pOxid = oxid; + r.out.ipidRemUnknown = oid; status = dcerpc_RemoteActivation(p, mem_ctx, &r); if(NT_STATUS_IS_ERR(status)) { @@ -60,7 +62,7 @@ static int test_RemoteActivation(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, uin } if(!W_ERROR_IS_OK(r.out.hr)) { - fprintf(stderr, "RemoteActivation: %s\n", win_errstr(r.out.hr)); + fprintf(stderr, "RemoteActivation: %s\n", win_errstr(*r.out.hr)); return 0; } @@ -69,8 +71,6 @@ static int test_RemoteActivation(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, uin return 0; } - *oid = r.out.ipidRemUnknown; - *oxid = r.out.pOxid; return 1; } @@ -189,7 +189,7 @@ static int test_ResolveOxid2(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, uint64_ return 0; } - printf("Remote server versions: %d, %d\n", r.out.ComVersion.MajorVersion, r.out.ComVersion.MinorVersion); + printf("Remote server versions: %d, %d\n", r.out.ComVersion->MajorVersion, r.out.ComVersion->MinorVersion); return 1; } -- cgit