summaryrefslogtreecommitdiffstats
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.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/source/rpc_client/cli_connect.c b/source/rpc_client/cli_connect.c
index 6322302c955..aa74954e544 100644
--- a/source/rpc_client/cli_connect.c
+++ b/source/rpc_client/cli_connect.c
@@ -26,6 +26,7 @@
#include "rpc_parse.h"
struct user_creds *usr_creds = NULL;
+vuser_key *key = NULL;
extern int DEBUGLEVEL;
extern pstring scope;
@@ -101,6 +102,7 @@ static struct cli_connection *cli_con_get(const char* srv_name,
BOOL reuse)
{
struct cli_connection *con = NULL;
+ vuser_key con_key;
con = (struct cli_connection*)malloc(sizeof(*con));
@@ -112,6 +114,16 @@ static struct cli_connection *cli_con_get(const char* srv_name,
memset(con, 0, sizeof(*con));
con->type = MSRPC_NONE;
+ if (key != NULL)
+ {
+ con_key = *key;
+ }
+ else
+ {
+ con_key.pid = getpid();
+ con_key.vuid = 1;
+ }
+
copy_user_creds(&con->usr_creds, usr_creds);
con->usr_creds.reuse = reuse;
@@ -142,7 +154,7 @@ static struct cli_connection *cli_con_get(const char* srv_name,
become_root(False);
con->type = MSRPC_LOCAL;
con->usr_creds.reuse = False;
- con->msrpc.local = msrpc_use_add(&pipe_name[6], getpid(),
+ con->msrpc.local = msrpc_use_add(&pipe_name[6], &con_key,
&con->usr_creds,
False);
unbecome_root(False);
@@ -435,7 +447,11 @@ BOOL cli_set_con_usr_sesskey(struct cli_connection *con,
return False;
}
nt = cli_conn_get_ntinfo(con);
- memcpy(nt->usr_sess_key, usr_sess_key, sizeof(nt->usr_sess_key));
+ if (nt != NULL)
+ {
+ memcpy(nt->usr_sess_key, usr_sess_key, sizeof(nt->usr_sess_key));
+ }
+
return True;
}
@@ -526,6 +542,10 @@ struct ntuser_creds *cli_conn_get_usercreds(struct cli_connection *con)
****************************************************************************/
struct ntdom_info * cli_conn_get_ntinfo(struct cli_connection *con)
{
+ if (con == NULL)
+ {
+ return NULL;
+ }
if (con->msrpc.cli == NULL)
{
DEBUG(1,("cli_conn_get_ntinfo: NULL msrpc (closed)\n"));