new loop-back authentication mechanism.
authorLuke Leighton <lkcl@samba.org>
Sun, 6 Feb 2000 20:38:47 +0000 (20:38 +0000)
committerLuke Leighton <lkcl@samba.org>
Sun, 6 Feb 2000 20:38:47 +0000 (20:38 +0000)
source/rpc_client/cli_connect.c
source/smbd/uid.c

index aa74954e544bb6967165ecfd176677972acea5e9..60fbb5cb5513e787d738f304ef7d5525c947ced5 100644 (file)
@@ -26,7 +26,7 @@
 #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;
@@ -114,19 +114,29 @@ static struct cli_connection *cli_con_get(const char* srv_name,
        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);
index 6b05cfda2f4a7aaaf286201052b9816059451e79..2e9aa3bc678400d4c0d89ec181dee97404289565 100644 (file)
@@ -30,9 +30,13 @@ extern struct current_user current_user;
 ****************************************************************************/
 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);
 }
 /****************************************************************************
@@ -151,6 +155,9 @@ BOOL become_userk(connection_struct *conn, const vuser_key *key)
 ****************************************************************************/
 BOOL unbecome_user(void )
 {
+       extern vuser_key *user_key;
+       user_key = NULL;
+
   if (!current_user.conn)
     return(False);