s3:libnet_join: call cli_session_creds_init() directly
authorStefan Metzmacher <metze@samba.org>
Mon, 11 Nov 2019 14:38:24 +0000 (15:38 +0100)
committerAndreas Schneider <asn@cryptomilk.org>
Thu, 28 May 2020 06:43:39 +0000 (06:43 +0000)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
source3/libnet/libnet_join.c

index fa3a91f1121fb3349cc9e0b9b6b27f90fea5b65a..9fdc18c4994fc73dd39c5d494adaad2c3db5f92c 100644 (file)
@@ -1057,25 +1057,47 @@ static NTSTATUS libnet_join_connect_dc_ipc(const char *dc,
                                           bool use_kerberos,
                                           struct cli_state **cli)
 {
+       TALLOC_CTX *frame = talloc_stackframe();
+       bool fallback_after_kerberos = false;
+       bool use_ccache = false;
+       bool pw_nt_hash = false;
+       struct cli_credentials *creds = NULL;
        int flags = 0;
+       NTSTATUS status;
 
-       if (use_kerberos) {
-               flags |= CLI_FULL_CONNECTION_USE_KERBEROS;
+       if (use_kerberos && pass) {
+               fallback_after_kerberos = true;
+       }
+
+       creds = cli_session_creds_init(frame,
+                                      user,
+                                      domain,
+                                      NULL, /* realm (use default) */
+                                      pass,
+                                      use_kerberos,
+                                      fallback_after_kerberos,
+                                      use_ccache,
+                                      pw_nt_hash);
+       if (creds == NULL) {
+               TALLOC_FREE(frame);
+               return NT_STATUS_NO_MEMORY;
        }
 
-       if (use_kerberos && pass) {
-               flags |= CLI_FULL_CONNECTION_FALLBACK_AFTER_KERBEROS;
-       }
-
-       return cli_full_connection(cli, NULL,
-                                  dc,
-                                  NULL, 0,
-                                  "IPC$", "IPC",
-                                  user,
-                                  domain,
-                                  pass,
-                                  flags,
-                                  SMB_SIGNING_IPC_DEFAULT);
+       status = cli_full_connection_creds(cli,
+                                          NULL,
+                                          dc,
+                                          NULL, 0,
+                                          "IPC$", "IPC",
+                                          creds,
+                                          flags,
+                                          SMB_SIGNING_IPC_DEFAULT);
+       if (!NT_STATUS_IS_OK(status)) {
+               TALLOC_FREE(frame);
+               return status;
+       }
+
+       TALLOC_FREE(frame);
+       return NT_STATUS_OK;
 }
 
 /****************************************************************