The branch, master has been updated
       via  db26f7b7c49b6d4254ce5da7097e062b7dbd0409 (commit)
      from  008ac81b31455b1fad2f0c724e86c0848d452f0f (commit)

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


- Log -----------------------------------------------------------------
commit db26f7b7c49b6d4254ce5da7097e062b7dbd0409
Author: Günther Deschner <[EMAIL PROTECTED]>
Date:   Thu Oct 30 10:54:59 2008 +0100

    s4-smbtorture: add test for netr_DatabaseRedo.
    
    Guenther

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

Summary of changes:
 source4/torture/rpc/netlogon.c |  535 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 535 insertions(+), 0 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/torture/rpc/netlogon.c b/source4/torture/rpc/netlogon.c
index 96cab0b..953f9d1 100644
--- a/source4/torture/rpc/netlogon.c
+++ b/source4/torture/rpc/netlogon.c
@@ -32,8 +32,10 @@
 #include "../lib/crypto/crypto.h"
 #include "libcli/auth/libcli_auth.h"
 #include "librpc/gen_ndr/ndr_netlogon_c.h"
+#include "librpc/gen_ndr/ndr_netlogon.h"
 #include "librpc/gen_ndr/ndr_lsa_c.h"
 #include "param/param.h"
+#include "libcli/security/security.h"
 
 #define TEST_MACHINE_NAME "torturetest"
 
@@ -831,6 +833,538 @@ static bool test_DatabaseDeltas(struct torture_context 
*tctx,
        return true;
 }
 
+static bool test_DatabaseRedo(struct torture_context *tctx,
+                             struct dcerpc_pipe *p,
+                             struct cli_credentials *machine_credentials)
+{
+       NTSTATUS status;
+       struct netr_DatabaseRedo r;
+       struct creds_CredentialState *creds;
+       struct netr_Authenticator credential;
+       struct netr_Authenticator return_authenticator;
+       struct netr_DELTA_ENUM_ARRAY *delta_enum_array = NULL;
+       struct netr_ChangeLogEntry e;
+       struct dom_sid null_sid, *sid;
+       int i,d;
+
+       ZERO_STRUCT(null_sid);
+
+       sid = dom_sid_parse_talloc(tctx, 
"S-1-5-21-1111111111-2222222222-333333333-500");
+
+       {
+
+       struct {
+               uint32_t rid;
+               uint16_t flags;
+               uint8_t db_index;
+               uint8_t delta_type;
+               struct dom_sid sid;
+               const char *name;
+               NTSTATUS expected_error;
+               uint32_t expected_num_results;
+               uint8_t expected_delta_type_1;
+               uint8_t expected_delta_type_2;
+               const char *comment;
+       } changes[] = {
+
+               /* SAM_DATABASE_DOMAIN */
+
+               {
+                       .rid                    = 0,
+                       .flags                  = 0,
+                       .db_index               = SAM_DATABASE_DOMAIN,
+                       .delta_type             = NETR_DELTA_MODIFY_COUNT,
+                       .sid                    = null_sid,
+                       .name                   = NULL,
+                       .expected_error         = 
NT_STATUS_SYNCHRONIZATION_REQUIRED,
+                       .expected_num_results   = 0,
+                       .comment                = "NETR_DELTA_MODIFY_COUNT"
+               },
+               {
+                       .rid                    = 0,
+                       .flags                  = 0,
+                       .db_index               = SAM_DATABASE_DOMAIN,
+                       .delta_type             = 0,
+                       .sid                    = null_sid,
+                       .name                   = NULL,
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 1,
+                       .expected_delta_type_1  = NETR_DELTA_DOMAIN,
+                       .comment                = "NULL DELTA"
+               },
+               {
+                       .rid                    = 0,
+                       .flags                  = 0,
+                       .db_index               = SAM_DATABASE_DOMAIN,
+                       .delta_type             = NETR_DELTA_DOMAIN,
+                       .sid                    = null_sid,
+                       .name                   = NULL,
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 1,
+                       .expected_delta_type_1  = NETR_DELTA_DOMAIN,
+                       .comment                = "NETR_DELTA_DOMAIN"
+               },
+               {
+                       .rid                    = DOMAIN_RID_ADMINISTRATOR,
+                       .flags                  = 0,
+                       .db_index               = SAM_DATABASE_DOMAIN,
+                       .delta_type             = NETR_DELTA_USER,
+                       .sid                    = null_sid,
+                       .name                   = NULL,
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 1,
+                       .expected_delta_type_1  = NETR_DELTA_USER,
+                       .comment                = "NETR_DELTA_USER by rid 500"
+               },
+               {
+                       .rid                    = DOMAIN_RID_GUEST,
+                       .flags                  = 0,
+                       .db_index               = SAM_DATABASE_DOMAIN,
+                       .delta_type             = NETR_DELTA_USER,
+                       .sid                    = null_sid,
+                       .name                   = NULL,
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 1,
+                       .expected_delta_type_1  = NETR_DELTA_USER,
+                       .comment                = "NETR_DELTA_USER by rid 501"
+               },
+               {
+                       .rid                    = 0,
+                       .flags                  = NETR_CHANGELOG_SID_INCLUDED,
+                       .db_index               = SAM_DATABASE_DOMAIN,
+                       .delta_type             = NETR_DELTA_USER,
+                       .sid                    = *sid,
+                       .name                   = NULL,
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 1,
+                       .expected_delta_type_1  = NETR_DELTA_DELETE_USER,
+                       .comment                = "NETR_DELTA_USER by sid and 
flags"
+               },
+               {
+                       .rid                    = 0,
+                       .flags                  = NETR_CHANGELOG_SID_INCLUDED,
+                       .db_index               = SAM_DATABASE_DOMAIN,
+                       .delta_type             = NETR_DELTA_USER,
+                       .sid                    = null_sid,
+                       .name                   = NULL,
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 1,
+                       .expected_delta_type_1  = NETR_DELTA_DELETE_USER,
+                       .comment                = "NETR_DELTA_USER by null_sid 
and flags"
+               },
+               {
+                       .rid                    = 0,
+                       .flags                  = NETR_CHANGELOG_NAME_INCLUDED,
+                       .db_index               = SAM_DATABASE_DOMAIN,
+                       .delta_type             = NETR_DELTA_USER,
+                       .sid                    = null_sid,
+                       .name                   = "administrator",
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 1,
+                       .expected_delta_type_1  = NETR_DELTA_DELETE_USER,
+                       .comment                = "NETR_DELTA_USER by name 
'administrator'"
+               },
+               {
+                       .rid                    = DOMAIN_RID_ADMINS,
+                       .flags                  = 0,
+                       .db_index               = SAM_DATABASE_DOMAIN,
+                       .delta_type             = NETR_DELTA_GROUP,
+                       .sid                    = null_sid,
+                       .name                   = NULL,
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 2,
+                       .expected_delta_type_1  = NETR_DELTA_GROUP,
+                       .expected_delta_type_2  = NETR_DELTA_GROUP_MEMBER,
+                       .comment                = "NETR_DELTA_GROUP by rid 512"
+               },
+               {
+                       .rid                    = DOMAIN_RID_ADMINS,
+                       .flags                  = 0,
+                       .db_index               = SAM_DATABASE_DOMAIN,
+                       .delta_type             = NETR_DELTA_GROUP_MEMBER,
+                       .sid                    = null_sid,
+                       .name                   = NULL,
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 2,
+                       .expected_delta_type_1  = NETR_DELTA_GROUP,
+                       .expected_delta_type_2  = NETR_DELTA_GROUP_MEMBER,
+                       .comment                = "NETR_DELTA_GROUP_MEMBER by 
rid 512"
+               },
+
+
+               /* SAM_DATABASE_BUILTIN */
+
+               {
+                       .rid                    = 0,
+                       .flags                  = 0,
+                       .db_index               = SAM_DATABASE_BUILTIN,
+                       .delta_type             = NETR_DELTA_MODIFY_COUNT,
+                       .sid                    = null_sid,
+                       .name                   = NULL,
+                       .expected_error         = 
NT_STATUS_SYNCHRONIZATION_REQUIRED,
+                       .expected_num_results   = 0,
+                       .comment                = "NETR_DELTA_MODIFY_COUNT"
+               },
+               {
+                       .rid                    = 0,
+                       .flags                  = 0,
+                       .db_index               = SAM_DATABASE_BUILTIN,
+                       .delta_type             = NETR_DELTA_DOMAIN,
+                       .sid                    = null_sid,
+                       .name                   = NULL,
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 1,
+                       .expected_delta_type_1  = NETR_DELTA_DOMAIN,
+                       .comment                = "NETR_DELTA_DOMAIN"
+               },
+               {
+                       .rid                    = DOMAIN_RID_ADMINISTRATOR,
+                       .flags                  = 0,
+                       .db_index               = SAM_DATABASE_BUILTIN,
+                       .delta_type             = NETR_DELTA_USER,
+                       .sid                    = null_sid,
+                       .name                   = NULL,
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 1,
+                       .expected_delta_type_1  = NETR_DELTA_DELETE_USER,
+                       .comment                = "NETR_DELTA_USER by rid 500"
+               },
+               {
+                       .rid                    = 0,
+                       .flags                  = 0,
+                       .db_index               = SAM_DATABASE_BUILTIN,
+                       .delta_type             = NETR_DELTA_USER,
+                       .sid                    = null_sid,
+                       .name                   = NULL,
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 1,
+                       .expected_delta_type_1  = NETR_DELTA_DELETE_USER,
+                       .comment                = "NETR_DELTA_USER"
+               },
+               {
+                       .rid                    = 544,
+                       .flags                  = 0,
+                       .db_index               = SAM_DATABASE_BUILTIN,
+                       .delta_type             = NETR_DELTA_ALIAS,
+                       .sid                    = null_sid,
+                       .name                   = NULL,
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 2,
+                       .expected_delta_type_1  = NETR_DELTA_ALIAS,
+                       .expected_delta_type_2  = NETR_DELTA_ALIAS_MEMBER,
+                       .comment                = "NETR_DELTA_ALIAS by rid 544"
+               },
+               {
+                       .rid                    = 544,
+                       .flags                  = 0,
+                       .db_index               = SAM_DATABASE_BUILTIN,
+                       .delta_type             = NETR_DELTA_ALIAS_MEMBER,
+                       .sid                    = null_sid,
+                       .name                   = NULL,
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 2,
+                       .expected_delta_type_1  = NETR_DELTA_ALIAS,
+                       .expected_delta_type_2  = NETR_DELTA_ALIAS_MEMBER,
+                       .comment                = "NETR_DELTA_ALIAS_MEMBER by 
rid 544"
+               },
+               {
+                       .rid                    = 544,
+                       .flags                  = 0,
+                       .db_index               = SAM_DATABASE_BUILTIN,
+                       .delta_type             = 0,
+                       .sid                    = null_sid,
+                       .name                   = NULL,
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 1,
+                       .expected_delta_type_1  = NETR_DELTA_DOMAIN,
+                       .comment                = "NULL DELTA by rid 544"
+               },
+               {
+                       .rid                    = 544,
+                       .flags                  = NETR_CHANGELOG_SID_INCLUDED,
+                       .db_index               = SAM_DATABASE_BUILTIN,
+                       .delta_type             = 0,
+                       .sid                    = *dom_sid_parse_talloc(tctx, 
"S-1-5-32-544"),
+                       .name                   = NULL,
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 1,
+                       .expected_delta_type_1  = NETR_DELTA_DOMAIN,
+                       .comment                = "NULL DELTA by rid 544 sid 
S-1-5-32-544 and flags"
+               },
+               {
+                       .rid                    = 544,
+                       .flags                  = NETR_CHANGELOG_SID_INCLUDED,
+                       .db_index               = SAM_DATABASE_BUILTIN,
+                       .delta_type             = NETR_DELTA_ALIAS,
+                       .sid                    = *dom_sid_parse_talloc(tctx, 
"S-1-5-32-544"),
+                       .name                   = NULL,
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 2,
+                       .expected_delta_type_1  = NETR_DELTA_ALIAS,
+                       .expected_delta_type_2  = NETR_DELTA_ALIAS_MEMBER,
+                       .comment                = "NETR_DELTA_ALIAS by rid 544 
and sid S-1-5-32-544 and flags"
+               },
+               {
+                       .rid                    = 0,
+                       .flags                  = NETR_CHANGELOG_SID_INCLUDED,
+                       .db_index               = SAM_DATABASE_BUILTIN,
+                       .delta_type             = NETR_DELTA_ALIAS,
+                       .sid                    = *dom_sid_parse_talloc(tctx, 
"S-1-5-32-544"),
+                       .name                   = NULL,
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 1,
+                       .expected_delta_type_1  = NETR_DELTA_DELETE_ALIAS,
+                       .comment                = "NETR_DELTA_ALIAS by sid 
S-1-5-32-544 and flags"
+               },
+
+               /* SAM_DATABASE_PRIVS */
+
+               {
+                       .rid                    = 0,
+                       .flags                  = 0,
+                       .db_index               = SAM_DATABASE_PRIVS,
+                       .delta_type             = 0,
+                       .sid                    = null_sid,
+                       .name                   = NULL,
+                       .expected_error         = NT_STATUS_ACCESS_DENIED,
+                       .expected_num_results   = 0,
+                       .comment                = "NULL DELTA"
+               },
+               {
+                       .rid                    = 0,
+                       .flags                  = 0,
+                       .db_index               = SAM_DATABASE_PRIVS,
+                       .delta_type             = NETR_DELTA_MODIFY_COUNT,
+                       .sid                    = null_sid,
+                       .name                   = NULL,
+                       .expected_error         = 
NT_STATUS_SYNCHRONIZATION_REQUIRED,
+                       .expected_num_results   = 0,
+                       .comment                = "NETR_DELTA_MODIFY_COUNT"
+               },
+               {
+                       .rid                    = 0,
+                       .flags                  = 0,
+                       .db_index               = SAM_DATABASE_PRIVS,
+                       .delta_type             = NETR_DELTA_POLICY,
+                       .sid                    = null_sid,
+                       .name                   = NULL,
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 1,
+                       .expected_delta_type_1  = NETR_DELTA_POLICY,
+                       .comment                = "NETR_DELTA_POLICY"
+               },
+               {
+                       .rid                    = 0,
+                       .flags                  = NETR_CHANGELOG_SID_INCLUDED,
+                       .db_index               = SAM_DATABASE_PRIVS,
+                       .delta_type             = NETR_DELTA_POLICY,
+                       .sid                    = null_sid,
+                       .name                   = NULL,
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 1,
+                       .expected_delta_type_1  = NETR_DELTA_POLICY,
+                       .comment                = "NETR_DELTA_POLICY by null 
sid and flags"
+               },
+               {
+                       .rid                    = 0,
+                       .flags                  = NETR_CHANGELOG_SID_INCLUDED,
+                       .db_index               = SAM_DATABASE_PRIVS,
+                       .delta_type             = NETR_DELTA_POLICY,
+                       .sid                    = *dom_sid_parse_talloc(tctx, 
"S-1-5-32"),
+                       .name                   = NULL,
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 1,
+                       .expected_delta_type_1  = NETR_DELTA_POLICY,
+                       .comment                = "NETR_DELTA_POLICY by sid 
S-1-5-32 and flags"
+               },
+               {
+                       .rid                    = DOMAIN_RID_ADMINISTRATOR,
+                       .flags                  = 0,
+                       .db_index               = SAM_DATABASE_PRIVS,
+                       .delta_type             = NETR_DELTA_ACCOUNT,
+                       .sid                    = null_sid,
+                       .name                   = NULL,
+                       .expected_error         = 
NT_STATUS_SYNCHRONIZATION_REQUIRED, /* strange */
+                       .expected_num_results   = 0,
+                       .comment                = "NETR_DELTA_ACCOUNT by rid 
500"
+               },
+               {
+                       .rid                    = 0,
+                       .flags                  = NETR_CHANGELOG_SID_INCLUDED,
+                       .db_index               = SAM_DATABASE_PRIVS,
+                       .delta_type             = NETR_DELTA_ACCOUNT,
+                       .sid                    = *dom_sid_parse_talloc(tctx, 
"S-1-1-0"),
+                       .name                   = NULL,
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 1,
+                       .expected_delta_type_1  = NETR_DELTA_ACCOUNT,
+                       .comment                = "NETR_DELTA_ACCOUNT by sid 
S-1-1-0 and flags"
+               },
+               {
+                       .rid                    = 0,
+                       .flags                  = NETR_CHANGELOG_SID_INCLUDED |
+                                                 
NETR_CHANGELOG_IMMEDIATE_REPL_REQUIRED,
+                       .db_index               = SAM_DATABASE_PRIVS,
+                       .delta_type             = NETR_DELTA_ACCOUNT,
+                       .sid                    = *dom_sid_parse_talloc(tctx, 
"S-1-1-0"),
+                       .name                   = NULL,
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 1,
+                       .expected_delta_type_1  = NETR_DELTA_ACCOUNT,
+                       .comment                = "NETR_DELTA_ACCOUNT by sid 
S-1-1-0 and 2 flags"
+               },
+               {
+                       .rid                    = 0,
+                       .flags                  = NETR_CHANGELOG_SID_INCLUDED |
+                                                 NETR_CHANGELOG_NAME_INCLUDED,
+                       .db_index               = SAM_DATABASE_PRIVS,
+                       .delta_type             = NETR_DELTA_ACCOUNT,
+                       .sid                    = *dom_sid_parse_talloc(tctx, 
"S-1-1-0"),
+                       .name                   = NULL,
+                       .expected_error         = NT_STATUS_INVALID_PARAMETER,
+                       .expected_num_results   = 0,
+                       .comment                = "NETR_DELTA_ACCOUNT by sid 
S-1-1-0 and invalid flags"
+               },
+               {
+                       .rid                    = DOMAIN_RID_ADMINISTRATOR,
+                       .flags                  = NETR_CHANGELOG_SID_INCLUDED,
+                       .db_index               = SAM_DATABASE_PRIVS,
+                       .delta_type             = NETR_DELTA_ACCOUNT,
+                       .sid                    = *sid,
+                       .name                   = NULL,
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 1,
+                       .expected_delta_type_1  = NETR_DELTA_DELETE_ACCOUNT,
+                       .comment                = "NETR_DELTA_ACCOUNT by rid 
500, sid and flags"
+               },
+               {
+                       .rid                    = 0,
+                       .flags                  = NETR_CHANGELOG_NAME_INCLUDED,
+                       .db_index               = SAM_DATABASE_PRIVS,
+                       .delta_type             = NETR_DELTA_SECRET,
+                       .sid                    = null_sid,
+                       .name                   = "IsurelydontexistIhope",
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 1,
+                       .expected_delta_type_1  = NETR_DELTA_DELETE_SECRET,
+                       .comment                = "NETR_DELTA_SECRET by name 
'IsurelydontexistIhope' and flags"
+               },
+               {
+                       .rid                    = 0,
+                       .flags                  = NETR_CHANGELOG_NAME_INCLUDED,
+                       .db_index               = SAM_DATABASE_PRIVS,
+                       .delta_type             = NETR_DELTA_SECRET,
+                       .sid                    = null_sid,
+                       .name                   = "G$BCKUPKEY_P",
+                       .expected_error         = NT_STATUS_OK,
+                       .expected_num_results   = 1,
+                       .expected_delta_type_1  = NETR_DELTA_SECRET,
+                       .comment                = "NETR_DELTA_SECRET by name 
'G$BCKUPKEY_P' and flags"
+               }
+       };
+
+       ZERO_STRUCT(return_authenticator);
+
+       r.in.logon_server = talloc_asprintf(tctx, "\\\\%s", 
dcerpc_server_name(p));
+       r.in.computername = TEST_MACHINE_NAME;
+       r.in.return_authenticator = &return_authenticator;
+       r.out.return_authenticator = &return_authenticator;
+       r.out.delta_enum_array = &delta_enum_array;
+
+       for (d=0; d<3; d++) {
+
+               const char *database;
+
+               switch (d) {
+               case 0:
+                       database = "SAM";
+                       break;
+               case 1:
+                       database = "BUILTIN";
+                       break;
+               case 2:
+                       database = "LSA";
+                       break;
+               default:
+                       break;
+               }
+
+               torture_comment(tctx, "Testing DatabaseRedo\n");
+
+               if (!test_SetupCredentials(p, tctx, machine_credentials, 
&creds)) {
+                       return false;
+               }
+
+               for (i=0;i<ARRAY_SIZE(changes);i++) {
+
+                       if (d != changes[i].db_index) {
+                               continue;
+                       }
+
+                       creds_client_authenticator(creds, &credential);
+
+                       r.in.credential = &credential;
+
+                       e.serial_number1        = 0;
+                       e.serial_number2        = 0;
+                       e.object_rid            = changes[i].rid;
+                       e.flags                 = changes[i].flags;
+                       e.db_index              = changes[i].db_index;
+                       e.delta_type            = changes[i].delta_type;
+
+                       switch (changes[i].flags & 
(NETR_CHANGELOG_NAME_INCLUDED | NETR_CHANGELOG_SID_INCLUDED)) {
+                       case NETR_CHANGELOG_SID_INCLUDED:


-- 
Samba Shared Repository

Reply via email to