From 13b0776f60f6a0f35a4afc2b3d3c6b5ec9c1ca6a Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 21 Mar 2005 23:35:58 +0000 Subject: r5929: Use cli_credentials for the SMB functions as well. Fix a couple of bugs in the new cli_credentials code (This used to be commit 4ad481cfe5cde514d2ef9646147239f3faaa6173) --- source4/libcli/cliconnect.c | 26 +++++++------------------- source4/libcli/raw/clitree.c | 11 +++++------ 2 files changed, 12 insertions(+), 25 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/cliconnect.c b/source4/libcli/cliconnect.c index f391b6bc0d..3834d49e49 100644 --- a/source4/libcli/cliconnect.c +++ b/source4/libcli/cliconnect.c @@ -63,9 +63,7 @@ NTSTATUS smbcli_negprot(struct smbcli_state *cli) /* wrapper around smb_raw_session_setup() */ NTSTATUS smbcli_session_setup(struct smbcli_state *cli, - const char *user, - const char *password, - const char *domain) + struct cli_credentials *credentials) { struct smb_composite_sesssetup setup; NTSTATUS status; @@ -79,19 +77,19 @@ NTSTATUS smbcli_session_setup(struct smbcli_state *cli, setup.in.sesskey = cli->transport->negotiate.sesskey; setup.in.capabilities = cli->transport->negotiate.capabilities; - if (!user || !user[0]) { + if (cli_credentials_is_anonymous(credentials)) { setup.in.password = NULL; setup.in.user = ""; setup.in.domain = ""; setup.in.capabilities &= ~CAP_EXTENDED_SECURITY; } else { if (cli->transport->negotiate.sec_mode & NEGOTIATE_SECURITY_USER_LEVEL) { - setup.in.password = password; + setup.in.password = cli_credentials_get_password(credentials); } else { setup.in.password = NULL; } - setup.in.user = user; - setup.in.domain = domain; + setup.in.user = cli_credentials_get_username(credentials); + setup.in.domain = cli_credentials_get_domain(credentials); } status = smb_composite_sesssetup(cli->session, &setup); @@ -155,29 +153,19 @@ NTSTATUS smbcli_full_connection(TALLOC_CTX *parent_ctx, const char *host, const char *sharename, const char *devtype, - const char *username, - const char *domain, - const char *password) + struct cli_credentials *credentials) { struct smbcli_tree *tree; NTSTATUS status; - char *p; TALLOC_CTX *mem_ctx; mem_ctx = talloc_init("smbcli_full_connection"); *ret_cli = NULL; - /* if the username is of the form DOMAIN\username then split out the domain */ - p = strpbrk(username, "\\/"); - if (p) { - domain = talloc_strndup(mem_ctx, username, PTR_DIFF(p, username)); - username = talloc_strdup(mem_ctx, p+1); - } - status = smbcli_tree_full_connection(parent_ctx, &tree, myname, host, 0, sharename, devtype, - username, domain, password); + credentials); if (!NT_STATUS_IS_OK(status)) { goto done; } diff --git a/source4/libcli/raw/clitree.c b/source4/libcli/raw/clitree.c index 74db1c6952..0559c64dc1 100644 --- a/source4/libcli/raw/clitree.c +++ b/source4/libcli/raw/clitree.c @@ -167,8 +167,7 @@ NTSTATUS smbcli_tree_full_connection(TALLOC_CTX *parent_ctx, const char *my_name, const char *dest_host, int port, const char *service, const char *service_type, - const char *user, const char *domain, - const char *password) + struct cli_credentials *credentials) { struct smb_composite_connect io; NTSTATUS status; @@ -179,10 +178,10 @@ NTSTATUS smbcli_tree_full_connection(TALLOC_CTX *parent_ctx, io.in.calling_name = strupper_talloc(parent_ctx, my_name); io.in.service = service; io.in.service_type = service_type; - io.in.domain = domain; - io.in.user = user; - if (user && user[0]) { - io.in.password = password; + io.in.domain = cli_credentials_get_domain(credentials); + io.in.user = cli_credentials_get_username(credentials); + if (!cli_credentials_is_anonymous(credentials)) { + io.in.password = cli_credentials_get_password(credentials); } else { io.in.password = NULL; } -- cgit