#include "rpc_parse.h"
struct user_creds *usr_creds = NULL;
-vuser_key *key = NULL;
+vuser_key *user_key = NULL;
extern int DEBUGLEVEL;
extern pstring scope;
memset(con, 0, sizeof(*con));
con->type = MSRPC_NONE;
- if (key != NULL)
+ copy_user_creds(&con->usr_creds, usr_creds);
+ con->usr_creds.reuse = reuse;
+
+ if (user_key != NULL)
{
- con_key = *key;
+ con_key = *user_key;
}
else
{
+ NET_USER_INFO_3 usr;
+ uid_t uid = getuid();
+ gid_t gid = getgid();
+ char *name = uidtoname(uid);
+
+ ZERO_STRUCT(usr);
+
con_key.pid = getpid();
- con_key.vuid = 1;
+ con_key.vuid = register_vuid(con_key.pid,
+ uid, gid,
+ name, name, False,
+ &usr);
}
- copy_user_creds(&con->usr_creds, usr_creds);
- con->usr_creds.reuse = reuse;
-
if (srv_name != NULL)
{
con->srv_name = strdup(srv_name);
****************************************************************************/
BOOL become_user(connection_struct *conn, uint16 vuid)
{
- vuser_key key;
+ extern vuser_key *user_key;
+ static vuser_key key;
key.pid = getpid();
key.vuid = vuid;
+
+ user_key = &key;
+
return become_userk(conn, &key);
}
/****************************************************************************
****************************************************************************/
BOOL unbecome_user(void )
{
+ extern vuser_key *user_key;
+ user_key = NULL;
+
if (!current_user.conn)
return(False);