From 523ba5ed3221bb81eea0428e4d6900e35bd24f03 Mon Sep 17 00:00:00 2001 From: Derrell Lipman Date: Thu, 31 Mar 2005 21:16:20 +0000 Subject: r6156: Fixes bug #2543. Properly cache anonmous username when reverting to anonymous login, in libsmbclient. (This used to be commit cf2dcc110824cb3a4ce4e4bf608de25b7cfc2054) --- source3/libsmb/libsmbclient.c | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) (limited to 'source3/libsmb') diff --git a/source3/libsmb/libsmbclient.c b/source3/libsmb/libsmbclient.c index 657d0925b0..3e8e604ab1 100644 --- a/source3/libsmb/libsmbclient.c +++ b/source3/libsmb/libsmbclient.c @@ -558,6 +558,7 @@ SMBCSRV *smbc_server(SMBCCTX *context, int tried_reverse = 0; int port_try_first; int port_try_next; + const char *username_used; zero_ip(&ip); ZERO_STRUCT(c); @@ -712,16 +713,26 @@ SMBCSRV *smbc_server(SMBCCTX *context, return NULL; } - if (!cli_session_setup(&c, username, + username_used = username; + + if (!cli_session_setup(&c, username_used, password, strlen(password), password, strlen(password), - workgroup) && - /* Try an anonymous login if it failed and this was allowed by flags. */ - ((context->flags & SMBCCTX_FLAG_NO_AUTO_ANONYMOUS_LOGON) || - !cli_session_setup(&c, "", "", 1,"", 0, workgroup))) { - cli_shutdown(&c); - errno = EPERM; - return NULL; + workgroup)) { + + /* Failed. Try an anonymous login, if allowed by flags. */ + username_used = ""; + + if ((context->flags & SMBCCTX_FLAG_NO_AUTO_ANONYMOUS_LOGON) || + !cli_session_setup(&c, username_used, + password, 1, + password, 0, + workgroup)) { + + cli_shutdown(&c); + errno = EPERM; + return NULL; + } } DEBUG(4,(" session setup ok\n")); @@ -753,7 +764,7 @@ SMBCSRV *smbc_server(SMBCCTX *context, /* now add it to the cache (internal or external) */ /* Let the cache function set errno if it wants to */ errno = 0; - if (context->callbacks.add_cached_srv_fn(context, srv, server, share, workgroup, username)) { + if (context->callbacks.add_cached_srv_fn(context, srv, server, share, workgroup, username_used)) { int saved_errno = errno; DEBUG(3, (" Failed to add server to cache\n")); errno = saved_errno; -- cgit