r18404: * swap from POLICY_HND to the struct policy_handle from ndr/misc.h
authorGerald Carter <jerry@samba.org>
Mon, 11 Sep 2006 22:02:34 +0000 (22:02 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 16:51:22 +0000 (11:51 -0500)
* move OUR_HANDLE macro to include/rpc_misc.h
(This used to be commit 2b37079af2f569df7a58878150a61980c6fe06ee)

source3/include/rpc_misc.h
source3/rpc_client/cli_lsarpc.c
source3/rpc_client/cli_samr.c
source3/rpc_parse/parse_misc.c
source3/rpc_server/srv_lsa_hnd.c
source3/rpc_server/srv_reg_nt.c
source3/rpc_server/srv_spoolss_nt.c

index 24c71504337fd8bdf95480cd1f5a054653b9e5e2..91e0115b6932e28a1155a47d21542da4543abf95 100644 (file)
@@ -97,29 +97,12 @@ typedef struct {
        uint32 handle;           /* enumeration handle */
 } ENUM_HND;
 
+typedef struct policy_handle POLICY_HND;
 
-
-/********************************************************************** 
- * RPC policy handle used pretty much everywhere
- **********************************************************************/
-
-typedef struct {
-       uint32 data1;
-       uint32 data2;
-       uint16 data3;
-       uint16 data4;
-       uint8 data5[8];
-#ifdef __INSURE__
-
-       /* To prevent the leakage of policy handles mallocate a bit of
-          memory when a policy handle is created and free it when the
-          handle is closed.  This should cause Insure to flag an error
-          when policy handles are overwritten or fall out of scope without
-          being freed. */
-
-       char *marker;
-#endif
-} POLICY_HND;
+#define OUR_HANDLE(hnd) (((hnd)==NULL) ? "NULL" :\
+       ( IVAL((hnd)->uuid.node,2) == (uint32)sys_getpid() ? "OURS" : \
+               "OTHER")), ((unsigned int)IVAL((hnd)->uuid.node,2)),\
+               ((unsigned int)sys_getpid() )
 
 
 /********************************************************************** 
index 8597bcb3a80d6bc9346ce00bd6e84d374b393ac2..852602bb54ce2c63448c734839e670288f22661e 100644 (file)
@@ -78,9 +78,6 @@ NTSTATUS rpccli_lsa_open_policy(struct rpc_pipe_client *cli,
 
        if (NT_STATUS_IS_OK(result)) {
                *pol = r.pol;
-#ifdef __INSURE__
-               pol->marker = MALLOC(1);
-#endif
        }
 
        return result;
@@ -125,9 +122,6 @@ NTSTATUS rpccli_lsa_open_policy2(struct rpc_pipe_client *cli,
 
        if (NT_STATUS_IS_OK(result)) {
                *pol = r.pol;
-#ifdef __INSURE__
-               pol->marker = (char *)malloc(1);
-#endif
        }
 
        return result;
@@ -145,10 +139,6 @@ NTSTATUS rpccli_lsa_close(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
                
        memcpy( &policy, pol, sizeof(policy) );
 
-#ifdef __INSURE__
-       SAFE_FREE(pol->marker);
-#endif
-
        return rpccli_lsa_Close( cli, mem_ctx, &policy );
 }
 
index 4c6a868e7f0c99796bfe229692d832c36e30ae0e..a1e226dee641abc41d93314763ddd273579c9955 100644 (file)
@@ -52,9 +52,6 @@ NTSTATUS rpccli_samr_connect(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
 
        if (NT_STATUS_IS_OK(result = r.status)) {
                *connect_pol = r.connect_pol;
-#ifdef __INSURE__
-               connect_pol->marker = malloc(1);
-#endif
        }
 
        return result;
@@ -88,9 +85,6 @@ NTSTATUS rpccli_samr_connect4(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
 
        if (NT_STATUS_IS_OK(result = r.status)) {
                *connect_pol = r.connect_pol;
-#ifdef __INSURE__
-               connect_pol->marker = malloc(1);
-#endif
        }
 
        return result;
@@ -125,9 +119,6 @@ NTSTATUS rpccli_samr_close(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        /* Return output parameters */
 
        if (NT_STATUS_IS_OK(result = r.status)) {
-#ifdef __INSURE__
-               SAFE_FREE(connect_pol->marker);
-#endif
                *connect_pol = r.pol;
        }
 
@@ -166,9 +157,6 @@ NTSTATUS rpccli_samr_open_domain(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
 
        if (NT_STATUS_IS_OK(result = r.status)) {
                *domain_pol = r.domain_pol;
-#ifdef __INSURE__
-               domain_pol->marker = malloc(1);
-#endif
        }
 
        return result;
@@ -204,9 +192,6 @@ NTSTATUS rpccli_samr_open_user(struct rpc_pipe_client *cli,
 
        if (NT_STATUS_IS_OK(result = r.status)) {
                *user_pol = r.user_pol;
-#ifdef __INSURE__
-               user_pol->marker = malloc(1);
-#endif
        }
 
        return result;
@@ -244,9 +229,6 @@ NTSTATUS rpccli_samr_open_group(struct rpc_pipe_client *cli,
 
        if (NT_STATUS_IS_OK(result = r.status)) {
                *group_pol = r.pol;
-#ifdef __INSURE__
-               group_pol->marker = malloc(1);
-#endif
        }
 
        return result;
@@ -936,9 +918,6 @@ NTSTATUS rpccli_samr_open_alias(struct rpc_pipe_client *cli,
 
        if (NT_STATUS_IS_OK(result = r.status)) {
                *alias_pol = r.pol;
-#ifdef __INSURE__
-               alias_pol->marker = malloc(1);
-#endif
        }
 
        return result;
index 541d2d771fee2c1b7b0950866d99d639f7b1eed3..ef4d0e768992b665f81b9d0f5c7eae154dac0f14 100644 (file)
@@ -1695,15 +1695,9 @@ BOOL smb_io_pol_hnd(const char *desc, POLICY_HND *pol, prs_struct *ps, int depth
        if(UNMARSHALLING(ps))
                ZERO_STRUCTP(pol);
        
-       if (!prs_uint32("data1", ps, depth, &pol->data1))
+       if (!prs_uint32("handle_type", ps, depth, &pol->handle_type))
                return False;
-       if (!prs_uint32("data2", ps, depth, &pol->data2))
-               return False;
-       if (!prs_uint16("data3", ps, depth, &pol->data3))
-               return False;
-       if (!prs_uint16("data4", ps, depth, &pol->data4))
-               return False;
-       if(!prs_uint8s (False, "data5", ps, depth, pol->data5, sizeof(pol->data5)))
+       if (!smb_io_uuid("uuid", (struct uuid*)&pol->uuid, ps, depth))
                return False;
 
        return True;
index 7da87d5b93d028e6429d6cba07519f187055449f..88c59ee8952c4281aec89d89aa80561e60a3bcea 100644 (file)
@@ -103,6 +103,7 @@ BOOL create_policy_hnd(pipes_struct *p, POLICY_HND *hnd, void (*free_fn)(void *)
 {
        static uint32 pol_hnd_low  = 0;
        static uint32 pol_hnd_high = 0;
+       time_t t = time(NULL);
 
        struct policy *pol;
 
@@ -127,12 +128,17 @@ BOOL create_policy_hnd(pipes_struct *p, POLICY_HND *hnd, void (*free_fn)(void *)
        if (pol_hnd_low == 0)
                (pol_hnd_high)++;
 
-       SIVAL(&pol->pol_hnd.data1, 0 , 0);  /* first bit must be null */
-       SIVAL(&pol->pol_hnd.data2, 0 , pol_hnd_low ); /* second bit is incrementing */
-       SSVAL(&pol->pol_hnd.data3, 0 , pol_hnd_high); /* second bit is incrementing */
-       SSVAL(&pol->pol_hnd.data4, 0 , (pol_hnd_high>>16)); /* second bit is incrementing */
-       SIVAL(pol->pol_hnd.data5, 0, time(NULL)); /* something random */
-       SIVAL(pol->pol_hnd.data5, 4, sys_getpid()); /* something more random */
+       SIVAL(&pol->pol_hnd.handle_type, 0 , 0);  /* first bit must be null */
+       SIVAL(&pol->pol_hnd.uuid.time_low, 0 , pol_hnd_low ); /* second bit is incrementing */
+       SSVAL(&pol->pol_hnd.uuid.time_mid, 0 , pol_hnd_high); /* second bit is incrementing */
+       SSVAL(&pol->pol_hnd.uuid.time_hi_and_version, 0 , (pol_hnd_high>>16)); /* second bit is incrementing */
+
+       /* split the current time into two 16 bit values */
+
+       SSVAL(pol->pol_hnd.uuid.clock_seq, 0, (t>>16)); /* something random */
+       SSVAL(pol->pol_hnd.uuid.node, 0, t); /* something random */
+
+       SIVAL(pol->pol_hnd.uuid.node, 2, sys_getpid()); /* something more random */
 
        DLIST_ADD(p->pipe_handles->Policy, pol);
        p->pipe_handles->count++;
index 8fd0e55c5477ba4d02f9e43ae7761726ab7b7950..3728252c993190bbf3dba317d2fa077a5d028834 100644 (file)
@@ -30,9 +30,6 @@
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_RPC_SRV
 
-#define OUR_HANDLE(hnd) (((hnd)==NULL)?"NULL":(IVAL((hnd)->data5,4)==(uint32)sys_getpid()?"OURS":"OTHER")), \
-((unsigned int)IVAL((hnd)->data5,4)),((unsigned int)sys_getpid())
-
 static struct generic_mapping reg_generic_map = 
        { REG_KEY_READ, REG_KEY_WRITE, REG_KEY_EXECUTE, REG_KEY_ALL };
 
index e60a4318460f891a78d5fb002747cce4c7f805ac..5f8e705ea34fda66042d881f061b6c917309743b 100644 (file)
@@ -66,10 +66,6 @@ static uint32 smb_connections=0;
 
 extern STANDARD_MAPPING printer_std_mapping, printserver_std_mapping;
 
-#define OUR_HANDLE(hnd) (((hnd)==NULL)?"NULL":(IVAL((hnd)->data5,4)==(uint32)sys_getpid()?"OURS":"OTHER")), \
-((unsigned int)IVAL((hnd)->data5,4)),((unsigned int)sys_getpid())
-
-
 /* API table for Xcv Monitor functions */
 
 struct xcv_api_table {