aboutsummaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorGarance A Drosehn <gad@FreeBSD.org>2004-06-23 21:17:25 +0000
committerGarance A Drosehn <gad@FreeBSD.org>2004-06-23 21:17:25 +0000
commitdd693acf27dc86eac2dd48249c888fda345ff016 (patch)
treee9721c63aa044e2e8fbcb62891c82f8b5778127e /bin
parentb950fbe67bd6dfa52d9238130e4e4216bdc81db3 (diff)
Notes
Diffstat (limited to 'bin')
-rw-r--r--bin/ps/ps.c28
1 files changed, 18 insertions, 10 deletions
diff --git a/bin/ps/ps.c b/bin/ps/ps.c
index 55d1920ab031..f4b0208bb942 100644
--- a/bin/ps/ps.c
+++ b/bin/ps/ps.c
@@ -977,19 +977,27 @@ saveuser(KINFO *ki)
/*
* save arguments if needed
*/
- if (needcomm && (UREADOK(ki) || (ki->ki_p->ki_args != NULL))) {
- ki->ki_args = strdup(fmt(kvm_getargv, ki, ki->ki_p->ki_comm,
- MAXCOMLEN));
- } else if (needcomm) {
- asprintf(&ki->ki_args, "(%s)", ki->ki_p->ki_comm);
+ if (needcomm) {
+ if (ki->ki_p->ki_stat == SZOMB)
+ ki->ki_args = strdup("<defunct>");
+ else if (UREADOK(ki) || (ki->ki_p->ki_args != NULL))
+ ki->ki_args = strdup(fmt(kvm_getargv, ki,
+ ki->ki_p->ki_comm, MAXCOMLEN));
+ else
+ asprintf(&ki->ki_args, "(%s)", ki->ki_p->ki_comm);
+ if (ki->ki_env == NULL)
+ errx(1, "malloc failed");
} else {
ki->ki_args = NULL;
}
- if (needenv && UREADOK(ki)) {
- ki->ki_env = strdup(fmt(kvm_getenvv, ki, (char *)NULL, 0));
- } else if (needenv) {
- ki->ki_env = malloc(3);
- strcpy(ki->ki_env, "()");
+ if (needenv) {
+ if (UREADOK(ki))
+ ki->ki_env = strdup(fmt(kvm_getenvv, ki,
+ (char *)NULL, 0));
+ else
+ ki->ki_env = strdup("()");
+ if (ki->ki_env == NULL)
+ errx(1, "malloc failed");
} else {
ki->ki_env = NULL;
}