diff options
Diffstat (limited to 'sys/kern/kern_proc.c')
-rw-r--r-- | sys/kern/kern_proc.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c index 50f3446..113b806 100644 --- a/sys/kern/kern_proc.c +++ b/sys/kern/kern_proc.c @@ -430,7 +430,7 @@ fill_kinfo_proc(p, kp) kp->ki_svuid = p->p_ucred->cr_svuid; kp->ki_ngroups = p->p_ucred->cr_ngroups; bcopy(p->p_ucred->cr_groups, kp->ki_groups, - NGROUPS * sizeof(gid_t)); + KI_NGROUPS * sizeof(gid_t)); kp->ki_rgid = p->p_ucred->cr_rgid; kp->ki_svgid = p->p_ucred->cr_svgid; } @@ -458,13 +458,14 @@ fill_kinfo_proc(p, kp) p->p_stats->p_cru.ru_stime.tv_usec; } if (p->p_wmesg) { - strncpy(kp->ki_wmesg, p->p_wmesg, WMESGLEN); - kp->ki_wmesg[WMESGLEN] = 0; + strncpy(kp->ki_wmesg, p->p_wmesg, sizeof(kp->ki_wmesg) - 1); + kp->ki_wmesg[sizeof(kp->ki_wmesg) - 1] = '\0'; } if (p->p_stat == SMTX) { kp->ki_kiflag |= KI_MTXBLOCK; - strncpy(kp->ki_mtxname, p->p_mtxname, MTXNAMELEN); - kp->ki_mtxname[MTXNAMELEN] = 0; + strncpy(kp->ki_mtxname, p->p_mtxname, + sizeof(kp->ki_mtxname) - 1); + kp->ki_mtxname[sizeof(kp->ki_mtxname) - 1] = '\0'; } kp->ki_stat = p->p_stat; kp->ki_sflag = p->p_sflag; @@ -490,7 +491,10 @@ fill_kinfo_proc(p, kp) if (sp != NULL) { kp->ki_sid = sp->s_sid; - bcopy(sp->s_login, kp->ki_login, sizeof(kp->ki_login)); + strncpy(kp->ki_login, sp->s_login, + sizeof(kp->ki_login) - 1); + kp->ki_login[sizeof(kp->ki_login) - 1] = '\0'; + if (sp->s_ttyvp) kp->ki_kiflag = KI_CTTY; if (SESS_LEADER(p)) @@ -504,9 +508,11 @@ fill_kinfo_proc(p, kp) kp->ki_tsid = tp->t_session->s_sid; } else kp->ki_tdev = NOUDEV; - if (p->p_comm[0] != 0) { - strncpy(kp->ki_comm, p->p_comm, MAXCOMLEN); - kp->ki_comm[MAXCOMLEN] = 0; + if (p->p_comm[0] != '\0') { + strncpy(kp->ki_comm, p->p_comm, sizeof(kp->ki_comm) - 1); + kp->ki_comm[sizeof(kp->ki_comm) - 1] = '\0'; + strncpy(kp->ki_ocomm, p->p_comm, sizeof(kp->ki_ocomm) - 1); + kp->ki_ocomm[sizeof(kp->ki_ocomm) - 1] = '\0'; } kp->ki_siglist = p->p_siglist; kp->ki_sigmask = p->p_sigmask; |