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)
committerStefan Metzmacher <metze@samba.org>
Tue, 23 Feb 2010 15:19:58 +0000 (16:19 +0100)
This should fix the rpccli_netlogon_set_trust_password() against DC's
without netr_ServerPasswordSet2 support.

This fixes bug #7160.

metze

source3/rpc_client/cli_netlogon.c

index e484209cbe3d7b0b83b8e0a6390a712c382adc8e..3c4ddc21a429eee9cfa41a79110dfc343575b3b5 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;
 }