From 372f3fae88799ce321342dd976a317a8afc375e2 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Wed, 6 Jul 2005 01:53:34 +0000 Subject: r8171: According to Samba 3 and Ethereal, the winreg_OpenUnkown stuff is actually a uint16 * without the [string] attribute, a la the the system_name argument to samr_Connect(). Initialising the pointer to NULL is sufficient and we still pass the RPC-WINREG test against win2k3. (This used to be commit 407d962dacf7c833b36cb739e48fe97226968a34) --- source4/lib/registry/reg_backend_rpc.c | 5 +---- source4/librpc/idl/winreg.idl | 23 +++++++++-------------- source4/torture/rpc/winreg.c | 20 ++++---------------- 3 files changed, 14 insertions(+), 34 deletions(-) diff --git a/source4/lib/registry/reg_backend_rpc.c b/source4/lib/registry/reg_backend_rpc.c index 3c38b5d312..73d2d54687 100644 --- a/source4/lib/registry/reg_backend_rpc.c +++ b/source4/lib/registry/reg_backend_rpc.c @@ -43,12 +43,9 @@ static void init_winreg_String(struct winreg_String *name, const char *s) #define openhive(u) static WERROR open_ ## u(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct policy_handle *hnd) \ { \ struct winreg_Open ## u r; \ - struct winreg_OpenUnknown unknown; \ NTSTATUS status; \ \ - unknown.unknown0 = 0x84e0; \ - unknown.unknown1 = 0x0000; \ - r.in.unknown = &unknown; \ + r.in.system_name = 0; \ r.in.access_required = SEC_FLAG_MAXIMUM_ALLOWED; \ r.out.handle = hnd;\ \ diff --git a/source4/librpc/idl/winreg.idl b/source4/librpc/idl/winreg.idl index dc5ccdd02d..1f31d17f8c 100644 --- a/source4/librpc/idl/winreg.idl +++ b/source4/librpc/idl/winreg.idl @@ -20,15 +20,10 @@ unistr *name; } winreg_String; - typedef struct { - uint16 unknown0; - uint16 unknown1; - } winreg_OpenUnknown; - /******************/ /* Function: 0x00 */ WERROR winreg_OpenHKCR( - [in] winreg_OpenUnknown *unknown, + [in] uint16 *system_name, [in] uint32 access_required, [out,ref] policy_handle *handle ); @@ -36,7 +31,7 @@ /******************/ /* Function: 0x01 */ WERROR winreg_OpenHKCU( - [in] winreg_OpenUnknown *unknown, + [in] uint16 *system_name, [in] uint32 access_required, [out,ref] policy_handle *handle ); @@ -44,7 +39,7 @@ /******************/ /* Function: 0x02 */ WERROR winreg_OpenHKLM( - [in] winreg_OpenUnknown *unknown, + [in] uint16 *system_name, [in] uint32 access_required, [out,ref] policy_handle *handle ); @@ -52,7 +47,7 @@ /******************/ /* Function: 0x03 */ WERROR winreg_OpenHKPD( - [in] winreg_OpenUnknown *unknown, + [in] uint16 *system_name, [in] uint32 access_required, [out,ref] policy_handle *handle ); @@ -60,7 +55,7 @@ /******************/ /* Function: 0x04 */ WERROR winreg_OpenHKU( - [in] winreg_OpenUnknown *unknown, + [in] uint16 *system_name, [in] uint32 access_required, [out,ref] policy_handle *handle ); @@ -293,7 +288,7 @@ /******************/ /* Function: 0x1b */ WERROR winreg_OpenHKCC( - [in] winreg_OpenUnknown *unknown, + [in] uint16 *system_name, [in] uint32 access_required, [out,ref] policy_handle *handle ); @@ -301,7 +296,7 @@ /******************/ /* Function: 0x1c */ WERROR winreg_OpenHKDD( - [in] winreg_OpenUnknown *unknown, + [in] uint16 *system_name, [in] uint32 access_required, [out,ref] policy_handle *handle ); @@ -342,7 +337,7 @@ /******************/ /* Function: 0x20 */ WERROR winreg_OpenHKPT( - [in] winreg_OpenUnknown *unknown, + [in] uint16 *system_name, [in] uint32 access_required, [out,ref] policy_handle *handle ); @@ -350,7 +345,7 @@ /******************/ /* Function: 0x21 */ WERROR winreg_OpenHKPN( - [in] winreg_OpenUnknown *unknown, + [in] uint16 *system_name, [in] uint32 access_required, [out,ref] policy_handle *handle ); diff --git a/source4/torture/rpc/winreg.c b/source4/torture/rpc/winreg.c index 312d6e2414..969bba0691 100644 --- a/source4/torture/rpc/winreg.c +++ b/source4/torture/rpc/winreg.c @@ -475,14 +475,11 @@ static BOOL test_OpenHKLM(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, { NTSTATUS status; struct winreg_OpenHKLM r; - struct winreg_OpenUnknown unknown; BOOL ret = True; printf("\ntesting OpenHKLM\n"); - unknown.unknown0 = 0x84e0; - unknown.unknown1 = 0x0000; - r.in.unknown = &unknown; + r.in.system_name = 0; r.in.access_required = SEC_FLAG_MAXIMUM_ALLOWED; r.out.handle = handle; @@ -506,14 +503,11 @@ static BOOL test_OpenHKU(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, { NTSTATUS status; struct winreg_OpenHKU r; - struct winreg_OpenUnknown unknown; BOOL ret = True; printf("\ntesting OpenHKU\n"); - unknown.unknown0 = 0x84e0; - unknown.unknown1 = 0x0000; - r.in.unknown = &unknown; + r.in.system_name = 0; r.in.access_required = SEC_FLAG_MAXIMUM_ALLOWED; r.out.handle = handle; @@ -537,14 +531,11 @@ static BOOL test_OpenHKCR(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, { NTSTATUS status; struct winreg_OpenHKCR r; - struct winreg_OpenUnknown unknown; BOOL ret = True; printf("\ntesting OpenHKCR\n"); - unknown.unknown0 = 0x84e0; - unknown.unknown1 = 0x0000; - r.in.unknown = &unknown; + r.in.system_name = 0; r.in.access_required = SEC_FLAG_MAXIMUM_ALLOWED; r.out.handle = handle; @@ -649,14 +640,11 @@ static BOOL test_OpenHKCU(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, { NTSTATUS status; struct winreg_OpenHKCU r; - struct winreg_OpenUnknown unknown; BOOL ret = True; printf("\ntesting OpenHKCU\n"); - unknown.unknown0 = 0x84e0; - unknown.unknown1 = 0x0000; - r.in.unknown = &unknown; + r.in.system_name = 0; r.in.access_required = SEC_FLAG_MAXIMUM_ALLOWED; r.out.handle = handle; -- cgit