summaryrefslogtreecommitdiff
path: root/source/rpc_client/cli_connect.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/rpc_client/cli_connect.c')
-rw-r--r--source/rpc_client/cli_connect.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/source/rpc_client/cli_connect.c b/source/rpc_client/cli_connect.c
index d9e72a52cc2..caf83cade2c 100644
--- a/source/rpc_client/cli_connect.c
+++ b/source/rpc_client/cli_connect.c
@@ -111,7 +111,7 @@ static struct cli_connection *cli_con_get(const char *srv_name,
memset(con, 0, sizeof(*con));
con->type = MSRPC_NONE;
- copy_user_creds(&con->usr_creds, usr_creds);
+ copy_user_creds(&con->usr_creds, NULL);
con->usr_creds.reuse = reuse;
if (srv_name != NULL)
@@ -147,10 +147,15 @@ static struct cli_connection *cli_con_get(const char *srv_name,
}
else
{
+ struct ntuser_creds *ntc = NULL;
+ if (usr_creds != NULL)
+ {
+ ntc = &usr_creds->ntc;
+ }
con->type = MSRPC_SMB;
con->msrpc.smb =
ncacn_np_use_add(pipe_name, user_key, srv_name,
- &con->usr_creds.ntc, True, reuse,
+ ntc, True, reuse,
&is_new_connection);
if (con->msrpc.smb != NULL)
{
@@ -158,6 +163,8 @@ static struct cli_connection *cli_con_get(const char *srv_name,
con->msrpc.smb->smb->nt.key.pid = 0;
con->msrpc.smb->smb->nt.key.vuid = UID_FIELD_INVALID;
}
+ copy_nt_creds(&con->usr_creds.ntc,
+ &con->msrpc.smb->smb->usr);
}
if (is_new_connection && con->msrpc.cli != NULL)
@@ -319,7 +326,6 @@ BOOL cli_connection_init_auth(const char *srv_name, const char *pipe_name,
struct cli_connection **con,
cli_auth_fns * auth, void *auth_creds)
{
- BOOL res = True;
BOOL reuse = False;
/*
@@ -331,12 +337,7 @@ BOOL cli_connection_init_auth(const char *srv_name, const char *pipe_name,
*con = cli_con_get(srv_name, pipe_name, auth, auth_creds, reuse);
- if ((*con) == NULL)
- {
- return False;
- }
-
- return res;
+ return (*con) != NULL;
}
/****************************************************************************