[haiku-commits] haiku: hrev53234 - in src/system/kernel: . debug

  • From: waddlesplash <waddlesplash@xxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 7 Jul 2019 23:00:53 -0400 (EDT)

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.


Other related posts:

  • » [haiku-commits] haiku: hrev53234 - in src/system/kernel: . debug - waddlesplash