s3:cli_netlogon: keep the the correct negotiate_flags on the cli->dc structure
authorStefan Metzmacher <metze@samba.org>
Fri, 19 Feb 2010 22:22:40 +0000 (23:22 +0100)
committerKarolin Seeger <kseeger@samba.org>
Fri, 26 Feb 2010 15:06:29 +0000 (16:06 +0100)
This should fix the rpccli_netlogon_set_trust_password() against DC's
without netr_ServerPasswordSet2 support.

This fixes bug #7160.

metze
(cherry picked from commit 1e9df26ef970df41de54142a78606a15374acbac)
(cherry picked from commit a3e3355b5ccf74a2ffe5da6cbb2747e74586b1e5)

source3/rpc_client/cli_netlogon.c

index 03884479f9f08d77980030f7b2c2573ff1d5663a..9cb0bc6c1cfbfc67ae3859e09f9cf7f2c90cbfba 100644 (file)
@@ -45,6 +45,7 @@ NTSTATUS rpccli_netlogon_setup_creds(struct rpc_pipe_client *cli,
        struct samr_Password password;
        bool retried = false;
        fstring mach_acct;
+       uint32_t neg_flags = *neg_flags_inout;
 
        if (!ndr_syntax_id_equal(&cli->abstract_syntax,
                                 &ndr_table_netlogon.syntax_id)) {
@@ -81,7 +82,7 @@ NTSTATUS rpccli_netlogon_setup_creds(struct rpc_pipe_client *cli,
                                    &srv_chal_recv,
                                    &password,
                                    &clnt_chal_send,
-                                   *neg_flags_inout);
+                                   neg_flags);
 
        if (!cli->dc) {
                return NT_STATUS_NO_MEMORY;
@@ -98,7 +99,7 @@ NTSTATUS rpccli_netlogon_setup_creds(struct rpc_pipe_client *cli,
                                                 cli->dc->computer_name,
                                                 &clnt_chal_send, /* input. */
                                                 &srv_chal_recv, /* output. */
-                                                neg_flags_inout);
+                                                &neg_flags);
 
        /* we might be talking to NT4, so let's downgrade in that case and retry
         * with the returned neg_flags - gd */
@@ -132,6 +133,9 @@ NTSTATUS rpccli_netlogon_setup_creds(struct rpc_pipe_client *cli,
                "chain established.\n",
                cli->desthost ));
 
+       cli->dc->negotiate_flags = neg_flags;
+       *neg_flags_inout = neg_flags;
+
        return NT_STATUS_OK;
 }