The branch, master has been updated
       via  19d99a6... s4-smbtorture: add torture_create_testuser_max_pwlen() 
that allows to set maxpwlen.
       via  40e7a58... s4-smbtorture: autolookup domain in 
torture_create_testuser() if none was given.
      from  4955ccf... Fix more SMB2-OPLOCK bugs. Only 3 more issues to address 
then we're good to go on this test.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 19d99a64262735581c20d88ca449ca14f247f361
Author: Günther Deschner <[email protected]>
Date:   Tue May 11 23:55:53 2010 +0200

    s4-smbtorture: add torture_create_testuser_max_pwlen() that allows to set 
maxpwlen.
    
    required for upcoming rap pwd tests.
    
    Guenther

commit 40e7a5879c3cca212d302d3bce78e1c6e588849c
Author: Günther Deschner <[email protected]>
Date:   Tue May 11 17:46:18 2010 +0200

    s4-smbtorture: autolookup domain in torture_create_testuser() if none was 
given.
    
    Guenther

-----------------------------------------------------------------------

Summary of changes:
 source4/torture/rpc/testjoin.c |  103 ++++++++++++++++++++++++++++++++-------
 1 files changed, 84 insertions(+), 19 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/torture/rpc/testjoin.c b/source4/torture/rpc/testjoin.c
index cba9093..0e61960 100644
--- a/source4/torture/rpc/testjoin.c
+++ b/source4/torture/rpc/testjoin.c
@@ -114,11 +114,12 @@ static NTSTATUS DeleteUser_byname(struct 
dcerpc_binding_handle *b,
   when finished
 */
 
-struct test_join *torture_create_testuser(struct torture_context *torture,
-                                         const char *username, 
-                                         const char *domain,
-                                         uint16_t acct_type,
-                                         const char **random_password)
+struct test_join *torture_create_testuser_max_pwlen(struct torture_context 
*torture,
+                                                   const char *username,
+                                                   const char *domain,
+                                                   uint16_t acct_type,
+                                                   const char 
**random_password,
+                                                   int max_pw_len)
 {
        NTSTATUS status;
        struct samr_Connect c;
@@ -185,21 +186,76 @@ struct test_join *torture_create_testuser(struct 
torture_context *torture,
                return NULL;
        }
 
-       printf("Opening domain %s\n", domain);
+       if (domain) {
+               printf("Opening domain %s\n", domain);
 
-       name.string = domain;
-       l.in.connect_handle = &handle;
-       l.in.domain_name = &name;
-       l.out.sid = &sid;
+               name.string = domain;
+               l.in.connect_handle = &handle;
+               l.in.domain_name = &name;
+               l.out.sid = &sid;
 
-       status = dcerpc_samr_LookupDomain_r(b, join, &l);
-       if (!NT_STATUS_IS_OK(status)) {
-               printf("LookupDomain failed - %s\n", nt_errstr(status));
-               goto failed;
-       }
-       if (!NT_STATUS_IS_OK(l.out.result)) {
-               printf("LookupDomain failed - %s\n", nt_errstr(l.out.result));
-               goto failed;
+               status = dcerpc_samr_LookupDomain_r(b, join, &l);
+               if (!NT_STATUS_IS_OK(status)) {
+                       printf("LookupDomain failed - %s\n", nt_errstr(status));
+                       goto failed;
+               }
+               if (!NT_STATUS_IS_OK(l.out.result)) {
+                       printf("LookupDomain failed - %s\n", 
nt_errstr(l.out.result));
+                       goto failed;
+               }
+       } else {
+               struct samr_EnumDomains e;
+               uint32_t resume_handle = 0, num_entries;
+               struct samr_SamArray *sam;
+               int i;
+
+               e.in.connect_handle = &handle;
+               e.in.buf_size = (uint32_t)-1;
+               e.in.resume_handle = &resume_handle;
+               e.out.sam = &sam;
+               e.out.num_entries = &num_entries;
+               e.out.resume_handle = &resume_handle;
+
+               status = dcerpc_samr_EnumDomains_r(b, join, &e);
+               if (!NT_STATUS_IS_OK(status)) {
+                       printf("EnumDomains failed - %s\n", nt_errstr(status));
+                       goto failed;
+               }
+               if (!NT_STATUS_IS_OK(e.out.result)) {
+                       printf("EnumDomains failed - %s\n", 
nt_errstr(e.out.result));
+                       goto failed;
+               }
+               if ((num_entries != 2) || (sam && sam->count != 2)) {
+                       printf("unexpected number of domains\n");
+                       goto failed;
+               }
+               for (i=0; i < 2; i++) {
+                       if (!strequal(sam->entries[i].name.string, "builtin")) {
+                               domain = sam->entries[i].name.string;
+                               break;
+                       }
+               }
+               if (domain) {
+                       printf("Opening domain %s\n", domain);
+
+                       name.string = domain;
+                       l.in.connect_handle = &handle;
+                       l.in.domain_name = &name;
+                       l.out.sid = &sid;
+
+                       status = dcerpc_samr_LookupDomain_r(b, join, &l);
+                       if (!NT_STATUS_IS_OK(status)) {
+                               printf("LookupDomain failed - %s\n", 
nt_errstr(status));
+                               goto failed;
+                       }
+                       if (!NT_STATUS_IS_OK(l.out.result)) {
+                               printf("LookupDomain failed - %s\n", 
nt_errstr(l.out.result));
+                               goto failed;
+                       }
+               } else {
+                       printf("cannot proceed without domain name\n");
+                       goto failed;
+               }
        }
 
        talloc_steal(join, *l.out.sid);
@@ -262,7 +318,7 @@ again:
                policy_min_pw_len = pwp.out.info->min_password_length;
        }
 
-       random_pw = generate_random_password(join, MAX(8, policy_min_pw_len), 
255);
+       random_pw = generate_random_password(join, MAX(8, policy_min_pw_len), 
max_pw_len);
 
        printf("Setting account password '%s'\n", random_pw);
 
@@ -339,6 +395,15 @@ failed:
 }
 
 
+struct test_join *torture_create_testuser(struct torture_context *torture,
+                                         const char *username,
+                                         const char *domain,
+                                         uint16_t acct_type,
+                                         const char **random_password)
+{
+       return torture_create_testuser_max_pwlen(torture, username, domain, 
acct_type, random_password, 255);
+}
+
 _PUBLIC_ struct test_join *torture_join_domain(struct torture_context *tctx,
                                               const char *machine_name, 
                                      uint32_t acct_flags,


-- 
Samba Shared Repository

Reply via email to