diff options
author | Roland McGrath <roland@gnu.org> | 2001-12-22 21:00:25 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2001-12-22 21:00:25 +0000 |
commit | 1977d783a60647a384e6ab79bfd4e63f5b38d0a4 (patch) | |
tree | be42848c64dc9035cae973aac066ad80afbd36d6 /proc/info.c | |
parent | 7d3fa13e26ae944a8cf089b2a5c951f88d426907 (diff) | |
download | hurd-1977d783a60647a384e6ab79bfd4e63f5b38d0a4.tar.gz hurd-1977d783a60647a384e6ab79bfd4e63f5b38d0a4.tar.bz2 hurd-1977d783a60647a384e6ab79bfd4e63f5b38d0a4.zip |
2001-12-22 Roland McGrath <roland@frob.com>
* proc.h (check_owner): Move this extern inline function ...
* info.c (check_owner): ... to here, made static inline.
Diffstat (limited to 'proc/info.c')
-rw-r--r-- | proc/info.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/proc/info.c b/proc/info.c index 580ce8fb..342813c5 100644 --- a/proc/info.c +++ b/proc/info.c @@ -33,6 +33,20 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "proc.h" #include "process_S.h" + +/* Returns true if PROC1 has `owner' privileges over PROC2 (and can thus get + its task port &c). If PROC2 has an owner, then PROC1 must have that uid; + otherwise, both must be in the same login collection. */ +static inline int +check_owner (struct proc *proc1, struct proc *proc2) +{ + return + proc2->p_noowner + ? check_uid (proc1, 0) || proc1->p_login == proc2->p_login + : check_uid (proc1, proc2->p_owner); +} + + /* Implement S_proc_pid2task as described in <hurd/process.defs>. */ kern_return_t S_proc_pid2task (struct proc *callerp, @@ -40,7 +54,7 @@ S_proc_pid2task (struct proc *callerp, task_t *t) { struct proc *p; - + if (!callerp) return EOPNOTSUPP; |