From b6cf33015de596cd4295d24da4cfcee6c437e3aa Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Tue, 16 Jul 2019 14:03:57 +0200 Subject: smbd: inline change_to_user_and_service() into become_user() In the next commit we'll drop the _and_service() part. Pair-Programmed-With: Ralph Boehme Signed-off-by: Stefan Metzmacher Signed-off-by: Ralph Boehme Reviewed-by: Jeremy Allison --- source3/smbd/uid.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/source3/smbd/uid.c b/source3/smbd/uid.c index 913e9f30b00..5b0afcb1e9a 100644 --- a/source3/smbd/uid.c +++ b/source3/smbd/uid.c @@ -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(); -- cgit v1.2.1