about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLeah Neukirchen <leah@vuxu.org>2018-09-17 12:55:22 +0200
committerLeah Neukirchen <leah@vuxu.org>2018-09-17 12:55:22 +0200
commita2031e792e57e5201afeeda9de0cb7f9a7bea7aa (patch)
tree6d4fb37bc89ece5498866170ae6c3d4953c50a86
parent8d40ea5b6d5cbfb7558a5158b37ddec49dd2c4f6 (diff)
downloadextrace-a2031e792e57e5201afeeda9de0cb7f9a7bea7aa.tar.gz
extrace-a2031e792e57e5201afeeda9de0cb7f9a7bea7aa.tar.xz
extrace-a2031e792e57e5201afeeda9de0cb7f9a7bea7aa.zip
pwait: don't store pid 0 for invalid pids
-rw-r--r--pwait.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/pwait.c b/pwait.c
index fabbd7f..15b4904 100644
--- a/pwait.c
+++ b/pwait.c
@@ -146,7 +146,7 @@ main(int argc, char *argv[])
 	enum proc_cn_mcast_op *mcop_msg;
 	size_t recv_len = 0;
 	int opt;
-	int n;
+	int n, m;
 	pid_t *pids;
 	pid_t pid;
 	char *end;
@@ -177,14 +177,14 @@ usage:
 		exit(1);
 	}
 
-	for (n = 0; n < argc; n++) {
+	for (n = m = 0; n < argc; n++) {
 		errno = 0;
 		pid = strtol(argv[n], &end, 10);
 		if (pid < 0 || *end != '\0' || errno != 0) {
 			fprintf(stderr, "%s: bad process id\n", argv[n]);
 			continue;
 		}
-		pids[n] = pid;
+		pids[m++] = pid;
 	}
 
 	sk_nl = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_CONNECTOR);
@@ -261,7 +261,7 @@ usage:
 				pid_t pid = ev->event_data.exit.process_pid;
 
 				seen = 0;
-				for (n = 0; n < argc; n++)
+				for (n = 0; n < m; n++)
 					if (pids[n] == pid) {
 						if (verbose && !seen)
 							display(pid, status);
@@ -280,7 +280,7 @@ usage:
 		}
 
 		quit = 1;
-		for (n = 0; n < argc; n++)
+		for (n = 0; n < m; n++)
 			if (pids[n] != 0)
 				quit = 0;
 	}