summaryrefslogtreecommitdiff
path: root/usr/src/cmd/xargs/xargs.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/cmd/xargs/xargs.c')
-rw-r--r--usr/src/cmd/xargs/xargs.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/usr/src/cmd/xargs/xargs.c b/usr/src/cmd/xargs/xargs.c
index 517c33c7e1..26feb9bdf6 100644
--- a/usr/src/cmd/xargs/xargs.c
+++ b/usr/src/cmd/xargs/xargs.c
@@ -21,7 +21,7 @@
/*
* Copyright 2014 Garrett D'Amore <garrett@damore.org>
* Copyright 2012 DEY Storage Systems, Inc.
- * Copyright (c) 2017, Joyent, Inc.
+ * Copyright (c) 2018, Joyent, Inc.
*
* Portions of this file developed by DEY Storage Systems, Inc. are licensed
* under the terms of the Common Development and Distribution License (CDDL)
@@ -163,7 +163,7 @@ int
main(int argc, char **argv)
{
int j;
- unsigned long l;
+ long l;
struct inserts *psave;
int c;
int initsize;
@@ -316,13 +316,19 @@ main(int argc, char **argv)
case 'P': /* -P maxprocs: # of child processses */
errno = 0;
- l = strtoul(optarg, &eptr, 10);
+ l = strtol(optarg, &eptr, 10);
if (*eptr != '\0' || errno != 0) {
ermsg(_("failed to parse maxprocs (-P): %s\n"),
optarg);
break;
}
+ if (l < 0) {
+ ermsg(_("maximum number of processes (-P) "
+ "cannot be negative\n"));
+ break;
+ }
+
/*
* Come up with an upper bound that'll probably fit in
* memory.