summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2019-07-16 14:03:57 +0200
committerJeremy Allison <jra@samba.org>2019-09-11 19:59:34 +0000
commitb6cf33015de596cd4295d24da4cfcee6c437e3aa (patch)
tree2e164f7cf0b276bf80467b3bfeed38c57a735aea
parent5a736db046d1922e2b7ad13baf38c42b46f2115d (diff)
downloadsamba-b6cf33015de596cd4295d24da4cfcee6c437e3aa.tar.gz
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 <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>
-rw-r--r--source3/smbd/uid.c18
1 files changed, 17 insertions, 1 deletions
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();