Author: abartlet
Date: 2006-07-06 05:09:14 +0000 (Thu, 06 Jul 2006)
New Revision: 16826

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

Log:
Ensure we don't segfault if the remote server fails to set a password
in RPC-SAMR test.

Andrew Bartlett

Modified:
   branches/SAMBA_4_0/source/torture/rpc/samr.c


Changeset:
Modified: branches/SAMBA_4_0/source/torture/rpc/samr.c
===================================================================
--- branches/SAMBA_4_0/source/torture/rpc/samr.c        2006-07-06 05:08:30 UTC 
(rev 16825)
+++ branches/SAMBA_4_0/source/torture/rpc/samr.c        2006-07-06 05:09:14 UTC 
(rev 16826)
@@ -942,7 +942,7 @@
        BOOL ret = True;
        struct samr_Password hash1, hash2, hash3, hash4, hash5, hash6;
        struct policy_handle user_handle;
-       char *oldpass = *password;
+       char *oldpass;
        uint8_t old_nt_hash[16], new_nt_hash[16];
        uint8_t old_lm_hash[16], new_lm_hash[16];
 
@@ -964,6 +964,13 @@
 
        printf("Testing ChangePasswordUser\n");
 
+       if (!*password) {
+               printf("Failing ChangePasswordUser as old password was NULL.  
Previous test failed?\n");
+               return False;
+       }
+
+       oldpass = *password;
+
        E_md4hash(oldpass, old_nt_hash);
        E_md4hash(newpass, new_nt_hash);
        E_deshash(oldpass, old_lm_hash);
@@ -1015,7 +1022,7 @@
        struct samr_Password lm_verifier;
        struct samr_CryptPassword lm_pass;
        struct lsa_AsciiString server, account, account_bad;
-       char *oldpass = *password;
+       char *oldpass;
        char *newpass;
        uint8_t old_lm_hash[16], new_lm_hash[16];
 
@@ -1023,11 +1030,19 @@
        int policy_min_pw_len = 0;
 
        struct lsa_String domain_name;
+
        domain_name.string = "";
        dom_pw_info.in.domain_name = &domain_name;
 
        printf("Testing OemChangePasswordUser2\n");
 
+       if (!*password) {
+               printf("Failing OemChangePasswordUser2 as old password was 
NULL.  Previous test failed?\n");
+               return False;
+       }
+
+       oldpass = *password;
+
        status = dcerpc_samr_GetDomPwInfo(p, mem_ctx, &dom_pw_info);
        if (NT_STATUS_IS_OK(status)) {
                policy_min_pw_len = dom_pw_info.out.info.min_password_length;
@@ -1109,7 +1124,7 @@
        struct lsa_String server, account;
        struct samr_CryptPassword nt_pass, lm_pass;
        struct samr_Password nt_verifier, lm_verifier;
-       char *oldpass = *password;
+       char *oldpass;
        char *newpass;
        uint8_t old_nt_hash[16], new_nt_hash[16];
        uint8_t old_lm_hash[16], new_lm_hash[16];
@@ -1118,11 +1133,19 @@
        int policy_min_pw_len = 0;
 
        struct lsa_String domain_name;
+
+
        domain_name.string = "";
        dom_pw_info.in.domain_name = &domain_name;
 
        printf("Testing ChangePasswordUser2\n");
 
+       if (!*password) {
+               printf("Failing ChangePasswordUser3 as old password was NULL.  
Previous test failed?\n");
+               return False;
+       }
+       oldpass = *password;
+
        status = dcerpc_samr_GetDomPwInfo(p, mem_ctx, &dom_pw_info);
        if (NT_STATUS_IS_OK(status)) {
                policy_min_pw_len = dom_pw_info.out.info.min_password_length;
@@ -1180,13 +1203,19 @@
        struct lsa_String server, account, account_bad;
        struct samr_CryptPassword nt_pass, lm_pass;
        struct samr_Password nt_verifier, lm_verifier;
-       char *oldpass = *password;
+       char *oldpass;
        char *newpass = samr_rand_pass(mem_ctx, policy_min_pw_len);     
        uint8_t old_nt_hash[16], new_nt_hash[16];
        uint8_t old_lm_hash[16], new_lm_hash[16];
 
        printf("Testing ChangePasswordUser3\n");
 
+       if (!*password) {
+               printf("Failing ChangePasswordUser3 as old password was NULL.  
Previous test failed?\n");
+               return False;
+       }
+
+       oldpass = *password;
        server.string = talloc_asprintf(mem_ctx, "\\\\%s", 
dcerpc_server_name(p));
        init_lsa_String(&account, account_string);
 
@@ -1776,7 +1805,7 @@
 
        if (!test_SetUserPass(p, user_ctx, user_handle, &password)) {
                ret = False;
-       }       
+       }
 
        for (i = 0; password_fields[i]; i++) {
                if (!test_SetUserPass_23(p, user_ctx, user_handle, 
password_fields[i], &password)) {

Reply via email to