projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
check for "trace me" right off the bat
[unix-history]
/
usr
/
src
/
sys
/
kern
/
sys_process.c
diff --git
a/usr/src/sys/kern/sys_process.c
b/usr/src/sys/kern/sys_process.c
index
21135ac
..
5eda10e
100644
(file)
--- a/
usr/src/sys/kern/sys_process.c
+++ b/
usr/src/sys/kern/sys_process.c
@@
-4,7
+4,7
@@
*
* %sccs.include.proprietary.c%
*
*
* %sccs.include.proprietary.c%
*
- * @(#)sys_process.c 7.3
1
(Berkeley) %G%
+ * @(#)sys_process.c 7.3
2
(Berkeley) %G%
*/
#define IPCREG
*/
#define IPCREG
@@
-58,7
+58,13
@@
ptrace(curp, uap, retval)
register struct proc *p;
int error;
register struct proc *p;
int error;
+ if (uap->req <= 0) {
+ curp->p_flag |= STRC;
+ return (0);
+ }
p = pfind(uap->pid);
p = pfind(uap->pid);
+ if (p == 0)
+ return (ESRCH);
if (uap->req == PT_ATTACH) {
/*
* Must be root if the process has used set user or
if (uap->req == PT_ATTACH) {
/*
* Must be root if the process has used set user or
@@
-86,12
+92,7
@@
ptrace(curp, uap, retval)
psignal(p, SIGSTOP);
return (0);
}
psignal(p, SIGSTOP);
return (0);
}
- if (uap->req <= 0) {
- curp->p_flag |= STRC;
- return (0);
- }
- if (p == 0 || p->p_stat != SSTOP || p->p_pptr != curp ||
- !(p->p_flag & STRC))
+ if (p->p_stat != SSTOP || p->p_pptr != curp || !(p->p_flag & STRC))
return (ESRCH);
while (ipc.ip_lock)
sleep((caddr_t)&ipc, IPCPRI);
return (ESRCH);
while (ipc.ip_lock)
sleep((caddr_t)&ipc, IPCPRI);