aboutsummaryrefslogtreecommitdiff
path: root/proc/info.c
diff options
context:
space:
mode:
Diffstat (limited to 'proc/info.c')
-rw-r--r--proc/info.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/proc/info.c b/proc/info.c
index ab74fb39..c2d7ad67 100644
--- a/proc/info.c
+++ b/proc/info.c
@@ -500,6 +500,7 @@ S_proc_getprocinfo (struct proc *callerp,
struct proc *tp;
task_t task; /* P's task port. */
mach_port_t msgport; /* P's msgport, or MACH_PORT_NULL if none. */
+ int owned;
/* No need to check CALLERP here; we don't use it. */
@@ -624,6 +625,8 @@ S_proc_getprocinfo (struct proc *callerp,
*piarraylen = structsize / sizeof (int);
pi = (struct procinfo *) *piarray;
+ owned = p->p_id && p->p_id->i_nuids;
+
pi->state =
((p->p_stopped ? PI_STOPPED : 0)
| (p->p_exec ? PI_EXECED : 0)
@@ -631,12 +634,12 @@ S_proc_getprocinfo (struct proc *callerp,
| (!p->p_pgrp->pg_orphcnt ? PI_ORPHAN : 0)
| (p->p_msgport == MACH_PORT_NULL ? PI_NOMSG : 0)
| (p->p_pgrp->pg_session->s_sid == p->p_pid ? PI_SESSLD : 0)
- | (p->p_noowner ? PI_NOTOWNED : 0)
+ | (owned ? 0 : PI_NOTOWNED)
| (!p->p_parentset ? PI_NOPARENT : 0)
| (p->p_traced ? PI_TRACED : 0)
| (p->p_msgportwait ? PI_GETMSG : 0)
| (p->p_loginleader ? PI_LOGINLD : 0));
- pi->owner = p->p_owner;
+ pi->owner = owned ? p->p_id->i_uids[0] : 0;
pi->ppid = p->p_parent->p_pid;
pi->pgrp = p->p_pgrp->pg_pgid;
pi->session = p->p_pgrp->pg_session->s_sid;