Author: tpot
Date: 2005-07-06 01:53:34 +0000 (Wed, 06 Jul 2005)
New Revision: 8171

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=8171

Log:
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.

Modified:
   branches/SAMBA_4_0/source/lib/registry/reg_backend_rpc.c
   branches/SAMBA_4_0/source/librpc/idl/winreg.idl
   branches/SAMBA_4_0/source/torture/rpc/winreg.c


Changeset:
Modified: branches/SAMBA_4_0/source/lib/registry/reg_backend_rpc.c
===================================================================
--- branches/SAMBA_4_0/source/lib/registry/reg_backend_rpc.c    2005-07-05 
15:18:24 UTC (rev 8170)
+++ branches/SAMBA_4_0/source/lib/registry/reg_backend_rpc.c    2005-07-06 
01:53:34 UTC (rev 8171)
@@ -43,12 +43,9 @@
 #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;\
        \

Modified: branches/SAMBA_4_0/source/librpc/idl/winreg.idl
===================================================================
--- branches/SAMBA_4_0/source/librpc/idl/winreg.idl     2005-07-05 15:18:24 UTC 
(rev 8170)
+++ branches/SAMBA_4_0/source/librpc/idl/winreg.idl     2005-07-06 01:53:34 UTC 
(rev 8171)
@@ -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
        );

Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c
===================================================================
--- branches/SAMBA_4_0/source/torture/rpc/winreg.c      2005-07-05 15:18:24 UTC 
(rev 8170)
+++ branches/SAMBA_4_0/source/torture/rpc/winreg.c      2005-07-06 01:53:34 UTC 
(rev 8171)
@@ -475,14 +475,11 @@
 {
        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 @@
 {
        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 @@
 {
        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 @@
 {
        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;
 

Reply via email to