From 5c97129ce3fb8602242450c9cb05d37fe828f0b5 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Sun, 7 Jul 2019 22:51:09 -0400 Subject: [PATCH] kernel/team: Remove team_get_team_struct, add team_geteuid. Thanks to Axel for the review. --- src/system/kernel/debug/user_debugger.cpp | 9 ++------- src/system/kernel/team.cpp | 20 ++++++++++++-------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/system/kernel/debug/user_debugger.cpp b/src/system/kernel/debug/user_debugger.cpp index d20b2102cc..a8ef8ae3b5 100644 --- a/src/system/kernel/debug/user_debugger.cpp +++ b/src/system/kernel/debug/user_debugger.cpp @@ -2859,13 +2859,8 @@ _user_install_default_debugger(port_id debuggerPort) port_id _user_install_team_debugger(team_id teamID, port_id debuggerPort) { - if (geteuid() != 0) { - Team* team = team_get_team_struct(teamID); - if (team == NULL) - return B_BAD_VALUE; - if (team->effective_uid != geteuid()) - return B_PERMISSION_DENIED; - } + if (geteuid() != 0 && team_geteuid(teamID) != geteuid()) + return B_PERMISSION_DENIED; return install_team_debugger(teamID, debuggerPort, -1, false, false); } diff --git a/src/system/kernel/team.cpp b/src/system/kernel/team.cpp index a3fb03b484..25be5c40c0 100644 --- a/src/system/kernel/team.cpp +++ b/src/system/kernel/team.cpp @@ -2918,15 +2918,8 @@ team_is_valid(team_id id) if (id <= 0) return false; - return team_get_team_struct(id) != NULL; -} - - -Team* -team_get_team_struct(team_id id) -{ InterruptsReadSpinLocker teamsLocker(sTeamHashLock); - return team_get_team_struct_locked(id); + return team_get_team_struct_locked(id) != NULL; } @@ -3021,6 +3014,17 @@ team_set_foreground_process_group(int32 ttyIndex, pid_t processGroupID) } +uid_t +team_geteuid(team_id id) +{ + InterruptsReadSpinLocker teamsLocker(sTeamHashLock); + Team* team = team_get_team_struct_locked(id); + if (team == NULL) + return (uid_t)-1; + return team->effective_uid; +} + + /*! Removes the specified team from the global team hash, from its process group, and from its parent. It also moves all of its children to the kernel team.