r14464: Don't include ndr_BASENAME.h files unless strictly required, instead
[kai/samba-autobuild/.git] / source4 / torture / rpc / testjoin.c
index 622b6ac08adfbb1b1422005db9e2c6b0bf656b3f..76fe3ec2ae9b16859ed8bfbf5f24bbbd9e5790a0 100644 (file)
 #include "lib/crypto/crypto.h"
 #include "libnet/libnet.h"
 #include "lib/cmdline/popt_common.h"
+#include "smb.h"
 #include "lib/ldb/include/ldb.h"
+#include "librpc/gen_ndr/ndr_samr.h"
+#include "librpc/gen_ndr/ndr_samr_c.h"
 
+#include "libcli/auth/libcli_auth.h"
+#include "torture/rpc/rpc.h"
+#include "libcli/security/proto.h"
 
 struct test_join {
        struct dcerpc_pipe *p;
        struct policy_handle user_handle;
        struct libnet_JoinDomain *libnet_r;
-       const char *dom_sid;
+       struct dom_sid *dom_sid;
+       struct dom_sid *user_sid;
 };
 
 
@@ -159,7 +166,8 @@ struct test_join *torture_create_testuser(const char *username,
                goto failed;
        }
 
-       join->dom_sid = dom_sid_string(join, l.out.sid);
+       talloc_steal(join, l.out.sid);
+       join->dom_sid = l.out.sid;
 
        o.in.connect_handle = &handle;
        o.in.access_mask = SEC_FLAG_MAXIMUM_ALLOWED;
@@ -198,6 +206,8 @@ again:
                goto failed;
        }
 
+       join->user_sid = dom_sid_add_rid(join, join->dom_sid, rid);
+
        pwp.in.user_handle = &join->user_handle;
 
        status = dcerpc_samr_GetUserPwInfo(join->p, join, &pwp);
@@ -328,7 +338,8 @@ struct test_join *torture_join_domain(const char *machine_name,
        }
        tj->p = libnet_r->out.samr_pipe;
        tj->user_handle = *libnet_r->out.user_handle;
-       tj->dom_sid = dom_sid_string(tj, libnet_r->out.domain_sid);
+       tj->dom_sid = libnet_r->out.domain_sid;
+       talloc_steal(tj, libnet_r->out.domain_sid);
 
        ZERO_STRUCT(u);
        s.in.user_handle = &tj->user_handle;
@@ -352,11 +363,6 @@ struct test_join *torture_join_domain(const char *machine_name,
                printf("SetUserInfo (non-critical) failed - %s\n", nt_errstr(status));
        }
 
-       DEBUG(0, ("%s joined domain %s (%s).\n", 
-                 libnet_r->in.netbios_name, 
-                 libnet_r->out.domain_name, 
-                 tj->dom_sid));
-
        *machine_credentials = cli_credentials_init(tj);
        cli_credentials_set_conf(*machine_credentials);
        cli_credentials_set_workstation(*machine_credentials, machine_name, CRED_SPECIFIED);
@@ -487,11 +493,16 @@ void torture_leave_domain(struct test_join *join)
 /*
   return the dom sid for a test join
 */
-const char *torture_join_sid(struct test_join *join)
+const struct dom_sid *torture_join_sid(struct test_join *join)
 {
        return join->dom_sid;
 }
 
+const struct dom_sid *torture_join_user_sid(struct test_join *join)
+{
+       return join->user_sid;
+}
+
 
 struct test_join_ads_dc {
        struct test_join *join;