smbd: inline change_to_user_and_service() into become_user()
authorStefan Metzmacher <metze@samba.org>
Tue, 16 Jul 2019 12:03:57 +0000 (14:03 +0200)
committerJeremy Allison <jra@samba.org>
Wed, 11 Sep 2019 19:59:34 +0000 (19:59 +0000)
In the next commit we'll drop the _and_service() part.

Pair-Programmed-With: Ralph Boehme <slow@samba.org>

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/smbd/uid.c

index 913e9f30b00f6e8c86095b0a9332a83d81337c69..5b0afcb1e9a6337dee79dfa38561298b0bc890cb 100644 (file)
@@ -661,8 +661,24 @@ void smbd_unbecome_root(void)
 
 bool become_user(connection_struct *conn, uint64_t vuid)
 {
+       struct user_struct *vuser;
+       int snum = SNUM(conn);
        bool ok;
 
+       if (conn == NULL) {
+               DBG_WARNING("Connection not open\n");
+               return false;
+       }
+
+       vuser = get_valid_user_struct(conn->sconn, vuid);
+       if (vuser == NULL) {
+               /* Invalid vuid sent */
+               DBG_WARNING("Invalid vuid %llu used on share %s.\n",
+                           (unsigned long long)vuid,
+                           lp_const_servicename(snum));
+               return false;
+       }
+
        ok = push_sec_ctx();
        if (!ok) {
                return false;
@@ -670,7 +686,7 @@ bool become_user(connection_struct *conn, uint64_t vuid)
 
        push_conn_ctx();
 
-       ok = change_to_user_and_service(conn, vuid);
+       ok = change_to_user_internal(conn, vuser->session_info, vuid);
        if (!ok) {
                pop_sec_ctx();
                pop_conn_ctx();