torture: Fix samsync domain_name checks.
authorAndreas Schneider <asn@samba.org>
Mon, 18 Feb 2013 16:17:19 +0000 (17:17 +0100)
committerAlexander Bokovoy <ab@samba.org>
Fri, 22 Feb 2013 15:36:12 +0000 (16:36 +0100)
Reviewed-by: Alexander Bokovoy <ab@samba.org>
source4/torture/rpc/samsync.c

index 7249705bf75ecfed907b8949df426f160bc3504d..81027d0658ddf42b49b7c16b77d5334741975ec6 100644 (file)
@@ -423,6 +423,15 @@ static bool samsync_handle_policy(struct torture_context *tctx,
 {
        struct netr_DELTA_POLICY *policy = delta->delta_union.policy;
 
+       switch (database_id) {
+       case SAM_DATABASE_DOMAIN:
+       case SAM_DATABASE_BUILTIN:
+               break;
+       case SAM_DATABASE_PRIVS:
+               torture_comment(tctx, "DOMAIN entry on privs DB!\n");
+               return false;
+       }
+
        samsync_state->seq_num[database_id] =
                policy->sequence_num;
 
@@ -459,11 +468,22 @@ static bool samsync_handle_user(struct torture_context *tctx, TALLOC_CTX *mem_ct
        struct samr_Password nt_hash;
        struct samr_Password *lm_hash_p = NULL;
        struct samr_Password *nt_hash_p = NULL;
-       const char *domain = samsync_state->domain_name[database_id];
+       const char *domain;
        const char *username = user->account_name.string;
        NTSTATUS nt_status;
        bool ret = true;
 
+       switch (database_id) {
+       case SAM_DATABASE_DOMAIN:
+       case SAM_DATABASE_BUILTIN:
+               break;
+       case SAM_DATABASE_PRIVS:
+               torture_comment(tctx, "DOMAIN entry on privs DB!\n");
+               return false;
+       }
+
+       domain = samsync_state->domain_name[database_id];
+
        struct samr_OpenUser r;
        struct samr_QueryUserInfo q;
        union samr_UserInfo *info;
@@ -472,7 +492,8 @@ static bool samsync_handle_user(struct torture_context *tctx, TALLOC_CTX *mem_ct
        struct samr_GetGroupsForUser getgroups;
        struct samr_RidWithAttributeArray *rids;
 
-       if (!samsync_state->domain_name || !samsync_state->domain_handle[database_id]) {
+       if (domain == NULL ||
+           samsync_state->domain_handle[database_id] == NULL) {
                torture_comment(tctx, "SamSync needs domain information before the users\n");
                return false;
        }
@@ -747,7 +768,17 @@ static bool samsync_handle_alias(struct torture_context *tctx,
        union samr_AliasInfo *info;
        struct policy_handle alias_handle;
 
-       if (!samsync_state->domain_name || !samsync_state->domain_handle[database_id]) {
+       switch (database_id) {
+       case SAM_DATABASE_DOMAIN:
+       case SAM_DATABASE_BUILTIN:
+               break;
+       case SAM_DATABASE_PRIVS:
+               torture_comment(tctx, "DOMAIN entry on privs DB!\n");
+               return false;
+       }
+
+       if (samsync_state->domain_name[database_id] == NULL ||
+           samsync_state->domain_handle[database_id] == NULL) {
                torture_comment(tctx, "SamSync needs domain information before the users\n");
                return false;
        }
@@ -800,7 +831,17 @@ static bool samsync_handle_group(struct torture_context *tctx,
        union samr_GroupInfo *info;
        struct policy_handle group_handle;
 
-       if (!samsync_state->domain_name || !samsync_state->domain_handle[database_id]) {
+       switch (database_id) {
+       case SAM_DATABASE_DOMAIN:
+       case SAM_DATABASE_BUILTIN:
+               break;
+       case SAM_DATABASE_PRIVS:
+               torture_comment(tctx, "DOMAIN entry on privs DB!\n");
+               return false;
+       }
+
+       if (samsync_state->domain_name[database_id] == NULL ||
+           samsync_state->domain_handle[database_id] == NULL) {
                torture_comment(tctx, "SamSync needs domain information before the users\n");
                return false;
        }