Author: brad
Date: 2005-08-22 02:00:48 +0000 (Mon, 22 Aug 2005)
New Revision: 9467

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

Log:
 [EMAIL PROTECTED]:  j0j0 | 2005-08-21 20:06:55 -0600
 Another round of bugfixing.
 

Modified:
   branches/SOC/SAMBA_4_0/
   branches/SOC/SAMBA_4_0/source/libnet/libnet_join.c
   branches/SOC/SAMBA_4_0/source/torture/rpc/testjoin.c
   branches/SOC/SAMBA_4_0/source/utils/net/net_join.c


Changeset:

Property changes on: branches/SOC/SAMBA_4_0
___________________________________________________________________
Name: svk:merge
   - 0c0555d6-39d7-0310-84fc-f1cc0bd64818:/branches/SAMBA_4_0:9397
d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/SAMBA_4_0:5508
d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/samba-SAMBA_4_0:5497
   + 0c0555d6-39d7-0310-84fc-f1cc0bd64818:/branches/SAMBA_4_0:9397
d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/SAMBA_4_0:5510
d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/samba-SAMBA_4_0:5497

Modified: branches/SOC/SAMBA_4_0/source/libnet/libnet_join.c
===================================================================
--- branches/SOC/SAMBA_4_0/source/libnet/libnet_join.c  2005-08-22 01:53:06 UTC 
(rev 9466)
+++ branches/SOC/SAMBA_4_0/source/libnet/libnet_join.c  2005-08-22 02:00:48 UTC 
(rev 9467)
@@ -66,7 +66,7 @@
        struct samr_LookupNames ln;
        struct samr_OpenUser ou;
        struct samr_CreateUser2 cu;
-       struct policy_handle u_handle;
+       struct policy_handle *u_handle;
        struct samr_QueryUserInfo qui;
        struct samr_SetUserInfo sui;
        union samr_UserInfo u_info;
@@ -88,7 +88,8 @@
                return NT_STATUS_NO_MEMORY;
        }
 
-
+       u_handle = talloc(tmp_ctx, struct policy_handle);
+               
        /* prepare connect to the LSA pipe of PDC */
        c.level                     = LIBNET_RPC_CONNECT_PDC;
        c.in.domain_name            = r->in.domain_name;
@@ -270,13 +271,15 @@
        }
 
        /* prepare samr_CreateUser2 */
-       ZERO_STRUCT(u_handle);
+       ZERO_STRUCT(*u_handle);
+/*     ZERO_STRUCT(r->out.user_handle);*/
        cu.in.domain_handle  = &d_handle;
        cu.in.access_mask     = SEC_FLAG_MAXIMUM_ALLOWED;
        samr_account_name.string = r->in.account_name;
        cu.in.account_name    = &samr_account_name;
        cu.in.acct_flags      = r->in.acct_type;
-       cu.out.user_handle    = &u_handle;
+       cu.out.user_handle    = u_handle;
+/*     cu.out.user_handle    = r->out.user_handle;*/
        cu.out.rid            = &rid;
        cu.out.access_granted = &access_granted;
 
@@ -323,11 +326,13 @@
                }
                
                /* prepare samr_OpenUser */
-               ZERO_STRUCT(u_handle);
+               ZERO_STRUCT(*u_handle);
+/*             ZERO_STRUCT(r->out.user_handle);*/
                ou.in.domain_handle = &d_handle;
                ou.in.access_mask = SEC_FLAG_MAXIMUM_ALLOWED;
                ou.in.rid = ln.out.rids.ids[0];
-               ou.out.user_handle = &u_handle;
+               ou.out.user_handle = u_handle;
+/*             ou.out.user_handle = r->out.user_handle;*/
                
                /* 6. do a samr_OpenUser to get a user handle */
                status = dcerpc_samr_OpenUser(samr_pipe, tmp_ctx, &ou);
@@ -341,7 +346,8 @@
        }
 
        /* Find out what password policy this user has */
-       pwp.in.user_handle = &u_handle;
+       pwp.in.user_handle = u_handle;
+/*     pwp.in.user_handle = r->out.user_handle;*/
 
        status = dcerpc_samr_GetUserPwInfo(samr_pipe, tmp_ctx, &pwp);
        if (NT_STATUS_IS_OK(status)) {
@@ -354,7 +360,8 @@
        r2.samr_handle.level            = LIBNET_SET_PASSWORD_SAMR_HANDLE;
        r2.samr_handle.in.account_name  = r->in.account_name;
        r2.samr_handle.in.newpassword   = r->out.join_password;
-       r2.samr_handle.in.user_handle   = &u_handle;
+       r2.samr_handle.in.user_handle   = u_handle;
+/*     r2.samr_handle.in.user_handle   = r->out.user_handle;*/
        r2.samr_handle.in.dcerpc_pipe   = samr_pipe;
 
        status = libnet_SetPassword(ctx, tmp_ctx, &r2);
@@ -367,7 +374,8 @@
        }
 
        /* prepare samr_QueryUserInfo (get flags) */
-       qui.in.user_handle = &u_handle;
+       qui.in.user_handle = u_handle;
+/*     qui.in.user_handle = r->out.user_handle;*/
        qui.in.level = 16;
        
        status = dcerpc_samr_QueryUserInfo(samr_pipe, tmp_ctx, &qui);
@@ -405,7 +413,8 @@
                ZERO_STRUCT(u_info);
                u_info.info16.acct_flags = acct_flags;
 
-               sui.in.user_handle = &u_handle;
+               sui.in.user_handle = u_handle;
+/*             sui.in.user_handle = r->out.user_handle;*/
                sui.in.info = &u_info;
                sui.in.level = 16;
                
@@ -421,7 +430,8 @@
        }
        r->out.samr_pipe = talloc_steal(mem_ctx, samr_pipe);
        r->out.samr_binding = talloc_steal(mem_ctx, samr_binding);
-       r->out.user_handle = &u_handle;
+       r->out.user_handle = talloc_steal(mem_ctx, u_handle);
+
        /* Now, if it was AD, then we want to start looking changing a
         * few more things.  Otherwise, we are done. */
        if (realm) {
@@ -469,7 +479,12 @@
                "dNSHostName",
                NULL,
        };
-
+       
+       /*
+       Valgrind complains about uninitialized values unless we set this.
+       */
+       r->out.error_string = NULL;
+       
        /* We need to convert between a samAccountName and domain to a
         * DN in the directory.  The correct way to do this is with
         * DRSUAPI CrackNames */
@@ -645,8 +660,10 @@
                }
        }
        
-/*     testing*/
-       r->out.error_string = NULL;
+/*     testing - if this talloc_free() executes, we segfault if we try and use 
the 
+       talloc_steal()'ed open pipe and handle (like we do in testjoin.c).
+.*/
+       
        talloc_free(tmp_ctx); 
 
 
@@ -708,16 +725,11 @@
        }
        
        r->out.samr_pipe = talloc_steal(mem_ctx, r2.out.samr_pipe);
+       /*r->out.user_handle = talloc_steal(mem_ctx, r2.out.user_handle);*/
        r->out.user_handle = talloc_steal(mem_ctx, r2.out.user_handle);
        r->out.domain_sid = talloc_steal(mem_ctx, r2.out.domain_sid);
        r->out.join_password = talloc_steal(mem_ctx, r2.out.join_password);
        
-       /*
-       r2.out.samr_pipe = talloc_steal(mem_ctx, r->out.samr_pipe);
-       r2.out.user_handle = talloc_steal(mem_ctx, r->out.user_handle);
-       r2.out.domain_sid = talloc_steal(mem_ctx, r->out.domain_sid);
-       r2.out.join_password = talloc_steal(mem_ctx, r->out.join_password);
-       */
        sct = talloc_asprintf(mem_ctx, "%d", r->in.secure_channel_type);
        msg = ldb_msg_new(mem_ctx);
 
@@ -816,7 +828,9 @@
        r->out.join_password = talloc_steal(mem_ctx, r2->out.join_password);
        r->out.domain_sid = talloc_steal(mem_ctx, r2->out.domain_sid);
        r->out.samr_pipe = talloc_steal(mem_ctx, r2->out.samr_pipe);
+       /*r->out.user_handle = talloc_steal(mem_ctx, r2->out.user_handle);*/
        r->out.user_handle = talloc_steal(mem_ctx, r2->out.user_handle);
+       /*r->out.user_handle = ctx->user_handle;*/
        
        return nt_status;
 }

Modified: branches/SOC/SAMBA_4_0/source/torture/rpc/testjoin.c
===================================================================
--- branches/SOC/SAMBA_4_0/source/torture/rpc/testjoin.c        2005-08-22 
01:53:06 UTC (rev 9466)
+++ branches/SOC/SAMBA_4_0/source/torture/rpc/testjoin.c        2005-08-22 
02:00:48 UTC (rev 9467)
@@ -288,7 +288,7 @@
        struct libnet_context *libnet_ctx;
        struct libnet_JoinDomain libnet_r;
        struct test_join *tj;
-               
+       
        NTSTATUS status;
        
        libnet_ctx = libnet_context_init(NULL);
@@ -306,6 +306,8 @@
         Call libnet_JoinDomain() rather than libnet_Join() -- it calls 
libnet_Join_primary_domain(), which puts 
         the machine acct info in secrets.tdb. We don't want that for a 
torture_join.
         */     
+       printf("joining domain.\n");
+       
        status = libnet_JoinDomain(libnet_ctx, mem_ctx, &libnet_r);
        if (!NT_STATUS_IS_OK(status)) {
                return NULL;
@@ -313,7 +315,7 @@
        
        tj = talloc(mem_ctx, struct test_join);
        
-       tj->p = libnet_r.out.samr_pipe;
+       tj->p = talloc_steal(mem_ctx, libnet_r.out.samr_pipe);
        tj->user_handle = *libnet_r.out.user_handle;
        tj->dom_sid = dom_sid_string(mem_ctx, libnet_r.out.domain_sid);
        *machine_password = libnet_r.out.join_password;
@@ -322,8 +324,12 @@
          Leave domain. This will ensure that the info for the torture machine
          acct is what we are expecting when we rejoin again.
        */
+       printf("leaving domain.\n");
+       
        torture_leave_domain(tj);
        
+       printf("joining domain.\n");
+       
        status = libnet_JoinDomain(libnet_ctx, mem_ctx, &libnet_r);
        if (!NT_STATUS_IS_OK(status)) {
                return NULL;
@@ -331,10 +337,10 @@
        
        tj = talloc(mem_ctx, struct test_join);
        
-       tj->p = libnet_r.out.samr_pipe;
+       tj->p = talloc_steal(mem_ctx, libnet_r.out.samr_pipe);
        tj->user_handle = *libnet_r.out.user_handle;
        tj->dom_sid = dom_sid_string(mem_ctx, libnet_r.out.domain_sid);
-       *machine_password = libnet_r.out.join_password;
+       *machine_password = talloc_steal(mem_ctx, libnet_r.out.join_password);
                        
        printf("torture_join_domain() complete.\n");
        return tj;

Modified: branches/SOC/SAMBA_4_0/source/utils/net/net_join.c
===================================================================
--- branches/SOC/SAMBA_4_0/source/utils/net/net_join.c  2005-08-22 01:53:06 UTC 
(rev 9466)
+++ branches/SOC/SAMBA_4_0/source/utils/net/net_join.c  2005-08-22 02:00:48 UTC 
(rev 9467)
@@ -69,7 +69,8 @@
        r.out.error_string       = NULL;
        r.in.level               = LIBNET_JOIN_AUTOMATIC;
        /*
-        Valgrind complains if we don't set netbios_name to null here.
+        Valgrind complains about an uninitialized value
+        if we don't set netbios_name to null here.
        */
        r.in.netbios_name        = NULL;
        

Reply via email to