Simplify make_connection_snum: Copy connection_struct info from server_info
authorVolker Lendecke <vl@samba.org>
Wed, 7 May 2008 10:42:36 +0000 (12:42 +0200)
committerVolker Lendecke <vl@samba.org>
Sat, 10 May 2008 09:17:00 +0000 (11:17 +0200)
source/smbd/service.c

index 974af8393246a2e867174bfe38e8ff0206acd47c..a95f7561327fbfd52e8232f5e4e7c0a78220bc6b 100644 (file)
@@ -762,20 +762,16 @@ static connection_struct *make_connection_snum(int snum, user_struct *vuser,
                return NULL;
        }
 
-       if (lp_guest_only(snum)) {
-               string_set(&conn->user, conn->server_info->unix_name);
+       if ((lp_guest_only(snum)) || (lp_security() == SEC_SHARE)) {
                conn->force_user = true;
-               DEBUG(3,("Guest only user %s\n", conn->user));
-       } else if (vuser) {
-               conn->vuid = vuser->vuid;
-               conn->uid = vuser->server_info->uid;
-               conn->gid = vuser->server_info->gid;
-               string_set(&conn->user,vuser->server_info->unix_name);
-       } else if (lp_security() == SEC_SHARE) {
-               string_set(&conn->user, conn->server_info->unix_name);
-               conn->force_user = True;
        }
 
+       conn->vuid = (vuser != NULL) ? vuser->vuid : UID_FIELD_INVALID;
+
+       conn->uid = conn->server_info->uid;
+       conn->gid = conn->server_info->gid;
+       string_set(&conn->user, conn->server_info->unix_name);
+
        add_session_user(conn->user);
 
        safe_strcpy(conn->client_address,
@@ -819,16 +815,18 @@ static connection_struct *make_connection_snum(int snum, user_struct *vuser,
         */
        
        if (*lp_force_user(snum)) {
+               fstring tmp;
+               fstrcpy(tmp, conn->user);
                status = find_forced_user(conn,
                                (vuser != NULL) && vuser->server_info->guest,
-                               conn->user);
+                               tmp);
                if (!NT_STATUS_IS_OK(status)) {
                        conn_free(conn);
                        *pstatus = status;
                        return NULL;
                }
                conn->force_user = True;
-               DEBUG(3,("Forced user %s\n",conn->user));
+               DEBUG(3,("Forced user %s\n",tmp));
        }
 
        /*