The branch, master has been updated
       via  843adc1... Fix bug 6829 - smbclient does not show special 
characters properly. All successful calls to cli_session_setup() *must* be 
followed by calls to cli_init_creds() to stash the credentials we successfully 
connected with. There were 2 codepaths where this was missing. This caused 
smbclient to be unable to open the \srvsvc pipe to do an RPC netserverenum, and 
cause it to fall back to a RAP netserverenum, which uses DOS codepage 
conversion rather than the full UCS2 of RPC, so the returned characters were 
not correct (unless the DOS codepage was set correctly). Phew. That was fun to 
track down :-). Jeremy.
      from  5c6944d... s3: Remove a pointless #endif/#ifdef pair

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 843adc1981d0ad380d207bdc014209aa8dd73344
Author: Jeremy Allison <j...@samba.org>
Date:   Thu Oct 22 15:06:38 2009 -0700

    Fix bug 6829 - smbclient does not show special characters properly.
    All successful calls to cli_session_setup() *must* be followed by
    calls to cli_init_creds() to stash the credentials we successfully
    connected with. There were 2 codepaths where this was missing. This
    caused smbclient to be unable to open the \srvsvc pipe to do an RPC
    netserverenum, and cause it to fall back to a RAP netserverenum,
    which uses DOS codepage conversion rather than the full UCS2 of
    RPC, so the returned characters were not correct (unless the DOS
    codepage was set correctly). Phew. That was fun to track down :-).
    Jeremy.

-----------------------------------------------------------------------

Summary of changes:
 source3/libsmb/clidfs.c        |    9 +++++++++
 source3/libsmb/libsmb_server.c |   11 +++++++++++
 2 files changed, 20 insertions(+), 0 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/libsmb/clidfs.c b/source3/libsmb/clidfs.c
index 5e944f1..53dc6d7 100644
--- a/source3/libsmb/clidfs.c
+++ b/source3/libsmb/clidfs.c
@@ -216,6 +216,15 @@ static struct cli_state *do_connect(TALLOC_CTX *ctx,
                        return NULL;
                }
                d_printf("Anonymous login successful\n");
+               status = cli_init_creds(c, "", lp_workgroup(), "");
+       } else {
+               status = cli_init_creds(c, username, lp_workgroup(), password);
+       }
+
+       if (!NT_STATUS_IS_OK(status)) {
+               DEBUG(10,("cli_init_creds() failed: %s\n", nt_errstr(status)));
+               cli_shutdown(c);
+               return NULL;
        }
 
        if ( show_sessetup ) {
diff --git a/source3/libsmb/libsmb_server.c b/source3/libsmb/libsmb_server.c
index 60849c8..18b12a1 100644
--- a/source3/libsmb/libsmb_server.c
+++ b/source3/libsmb/libsmb_server.c
@@ -498,6 +498,17 @@ again:
                         errno = EPERM;
                         return NULL;
                 }
+               status = cli_init_creds(c, username_used,
+                               *pp_workgroup, *pp_password);
+       } else {
+               status = cli_init_creds(c, username_used,
+                               *pp_workgroup, *pp_password);
+       }
+
+       if (!NT_STATUS_IS_OK(status)) {
+               errno = map_errno_from_nt_status(status);
+               cli_shutdown(c);
+               return NULL;
        }
 
        DEBUG(4,(" session setup ok\n"));


-- 
Samba Shared Repository

Reply via email to