return (EINVAL);
if (uap->pid > 0) {
/* kill single process */
- if ((p = pfind(uap->pid)) == NULL) {
+ if ((p = proc_findref(uap->pid)) == NULL) {
if ((p = pzfind(uap->pid)) != NULL) {
/*
* IEEE Std 1003.1-2001: return success
return (ESRCH);
}
AUDIT_ARG(process, p);
- if (!cansignal(cp, uc, p, uap->signum))
- return (EPERM);
+ if (!cansignal(cp, uc, p, uap->signum)) {
+ proc_dropref(p);
+ return(EPERM);
+ }
if (uap->signum)
psignal(p, uap->signum);
+ proc_dropref(p);
return (0);
}
switch (uap->pid) {