svn commit: samba r6156 - in branches/SAMBA_3_0/source/libsmb: .

derrell at samba.org derrell at samba.org
Thu Mar 31 21:16:21 GMT 2005


Author: derrell
Date: 2005-03-31 21:16:20 +0000 (Thu, 31 Mar 2005)
New Revision: 6156

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=6156

Log:
Fixes bug #2543.  Properly cache anonmous username when reverting to anonymous login, in libsmbclient.
Modified:
   branches/SAMBA_3_0/source/libsmb/libsmbclient.c


Changeset:
Modified: branches/SAMBA_3_0/source/libsmb/libsmbclient.c
===================================================================
--- branches/SAMBA_3_0/source/libsmb/libsmbclient.c	2005-03-31 20:28:47 UTC (rev 6155)
+++ branches/SAMBA_3_0/source/libsmb/libsmbclient.c	2005-03-31 21:16:20 UTC (rev 6156)
@@ -558,6 +558,7 @@
 	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 @@
 		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 @@
 	/* 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;



More information about the samba-cvs mailing list