summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/kern/kern_proc.c24
-rw-r--r--sys/sys/user.h13
2 files changed, 24 insertions, 13 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;
diff --git a/sys/sys/user.h b/sys/sys/user.h
index 3dbadf8..789b325 100644
--- a/sys/sys/user.h
+++ b/sys/sys/user.h
@@ -93,6 +93,10 @@
#endif
#define WMESGLEN 8 /* size of returned wchan message */
#define MTXNAMELEN 8 /* size of returned mutex name */
+#define OCOMMLEN 16 /* size of returned ki_ocomm name */
+#define COMMLEN 19 /* size of returned ki_comm name */
+#define KI_NGROUPS 16 /* number of groups in ki_groups */
+#define LOGNAMELEN 17 /* size of returned ki_login */
struct kinfo_proc {
int ki_structsize; /* size of this structure */
@@ -123,7 +127,7 @@ struct kinfo_proc {
gid_t ki_rgid; /* Real group id */
gid_t ki_svgid; /* Saved effective group id */
short ki_ngroups; /* number of groups */
- gid_t ki_groups[NGROUPS]; /* groups */
+ gid_t ki_groups[KI_NGROUPS]; /* groups */
vm_size_t ki_size; /* virtual size */
segsz_t ki_rssize; /* current resident set size in pages */
segsz_t ki_swrss; /* resident set size before last swap */
@@ -148,11 +152,12 @@ struct kinfo_proc {
char ki_rqindex; /* Run queue index */
u_char ki_oncpu; /* Which cpu we are on */
u_char ki_lastcpu; /* Last cpu we were on */
- char ki_comm[MAXCOMLEN+1]; /* command name */
+ char ki_ocomm[OCOMMLEN+1]; /* command name */
char ki_wmesg[WMESGLEN+1]; /* wchan message */
- char ki_login[MAXLOGNAME+1]; /* setlogin name */
+ char ki_login[LOGNAMELEN+1]; /* setlogin name */
char ki_mtxname[MTXNAMELEN+1]; /* mutex name */
- char ki_sparestrings[99]; /* spare string space */
+ char ki_comm[COMMLEN+1]; /* command name */
+ char ki_sparestrings[85]; /* spare string space */
struct rusage ki_rusage; /* process rusage statistics */
long ki_sflag; /* PS_* flags */
struct priority ki_pri; /* process priority */
OpenPOWER on IntegriCloud