hrev53234 adds 1 changeset to branch 'master'
old head: 05901d8963c69b695c9796289213a307cd714afb
new head: 5c97129ce3fb8602242450c9cb05d37fe828f0b5
overview:
https://git.haiku-os.org/haiku/log/?qt=range&q=5c97129ce3fb+%5E05901d8963c6
----------------------------------------------------------------------------
5c97129ce3fb: kernel/team: Remove team_get_team_struct, add team_geteuid.
Thanks to Axel for the review.
[ Augustin Cavalier <waddlesplash@xxxxxxxxx> ]
----------------------------------------------------------------------------
Revision: hrev53234
Commit: 5c97129ce3fb8602242450c9cb05d37fe828f0b5
URL: https://git.haiku-os.org/haiku/commit/?id=5c97129ce3fb
Author: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date: Mon Jul 8 02:51:09 2019 UTC
----------------------------------------------------------------------------
2 files changed, 14 insertions(+), 15 deletions(-)
src/system/kernel/debug/user_debugger.cpp | 9 ++-------
src/system/kernel/team.cpp | 20 ++++++++++++--------
----------------------------------------------------------------------------
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.