From: Andreas Schneider Date: Tue, 6 Jun 2017 15:29:16 +0000 (+0200) Subject: s3:libsmb: Fix printing the session setup information X-Git-Tag: ldb-1.1.31~152 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b6f87af427a1fa2bd397668d9f14cb0cf8ec5015;p=thirdparty%2Fsamba.git s3:libsmb: Fix printing the session setup information This fixes a regression and prints the session setup on connect again: Domain=[SAMBA-TEST] OS=[Windows 6.1] Server=[Samba 4.7.0pre1-DEVELOPERBUILD] smb: \> BUG: https://bugzilla.samba.org/show_bug.cgi?id=12824 Signed-off-by: Andreas Schneider Reviewed-by: Jeremy Allison --- diff --git a/source3/libsmb/cliconnect.c b/source3/libsmb/cliconnect.c index a28a5824dc2..08627226629 100644 --- a/source3/libsmb/cliconnect.c +++ b/source3/libsmb/cliconnect.c @@ -1122,7 +1122,8 @@ static void cli_session_setup_gensec_ready(struct tevent_req *req) server_domain = gensec_ntlmssp_server_domain( state->auth_generic->gensec_security); - if (state->cli->server_domain[0] == '\0' && server_domain != NULL) { + if ((state->cli->server_domain == NULL || + state->cli->server_domain[0] == '\0') && server_domain != NULL) { TALLOC_FREE(state->cli->server_domain); state->cli->server_domain = talloc_strdup(state->cli, server_domain); diff --git a/source3/libsmb/clidfs.c b/source3/libsmb/clidfs.c index c477d7c6a46..09e21ac7f8d 100644 --- a/source3/libsmb/clidfs.c +++ b/source3/libsmb/clidfs.c @@ -259,13 +259,31 @@ static NTSTATUS do_connect(TALLOC_CTX *ctx, return status; } - if ( show_sessetup ) { - if (*c->server_domain) { - DEBUG(0,("Domain=[%s] OS=[%s] Server=[%s]\n", - c->server_domain,c->server_os,c->server_type)); - } else if (*c->server_os || *c->server_type) { - DEBUG(0,("OS=[%s] Server=[%s]\n", - c->server_os,c->server_type)); + if (show_sessetup) { + const char *server_os = "unknown"; + const char *server_type = "unknown"; + bool do_print = false; + + if (c->server_os != NULL && c->server_os[0] != '\0') { + server_os = c->server_os; + do_print = true; + } + if (c->server_type != NULL && c->server_type[0] != '\0') { + server_type = c->server_type; + do_print = true; + } + + if (c->server_domain != NULL && c->server_domain[0] != '\0') { + DEBUG(0, ("Domain=[%s] OS=[%s] Server=[%s]\n", + c->server_domain, + server_os, + server_type)); + } else { + if (do_print) { + DEBUG(0, ("OS=[%s] Server=[%s]\n", + server_os, + server_type)); + } } } DEBUG(4,(" session setup ok\n")); diff --git a/source3/libsmb/clientgen.c b/source3/libsmb/clientgen.c index bc5c1b1ce3c..2c0b8c5f081 100644 --- a/source3/libsmb/clientgen.c +++ b/source3/libsmb/clientgen.c @@ -104,19 +104,6 @@ struct cli_state *cli_state_create(TALLOC_CTX *mem_ctx, return NULL; } - cli->server_domain = talloc_strdup(cli, ""); - if (!cli->server_domain) { - goto error; - } - cli->server_os = talloc_strdup(cli, ""); - if (!cli->server_os) { - goto error; - } - cli->server_type = talloc_strdup(cli, ""); - if (!cli->server_type) { - goto error; - } - cli->dfs_mountpoint = talloc_strdup(cli, ""); if (!cli->dfs_mountpoint) { goto error; diff --git a/source3/torture/masktest.c b/source3/torture/masktest.c index 95e0b04b040..57607b069a8 100644 --- a/source3/torture/masktest.c +++ b/source3/torture/masktest.c @@ -212,7 +212,9 @@ static struct cli_state *connect_one(char *share) * mode to turn these on/off ? JRA. */ - if (*c->server_domain || *c->server_os || *c->server_type) + if (c->server_domain != NULL || + c->server_os != NULL || + c->server_type != NULL) DEBUG(1,("Domain=[%s] OS=[%s] Server=[%s]\n", c->server_domain,c->server_os,c->server_type));