diff options
author | Robert Mustacchi <rm@joyent.com> | 2018-09-13 22:00:11 +0000 |
---|---|---|
committer | Robert Mustacchi <rm@joyent.com> | 2019-01-16 18:55:22 +0000 |
commit | 7c71d71894ca896e2718a24b51b39b0e5f9c27e6 (patch) | |
tree | 27da9debce08eacc1f1f68676564ddcd5a8003dc /usr/src | |
parent | 1bf8e91c2f089f0b4e9a6f705f162654aa82cfad (diff) | |
download | illumos-gate-7c71d71894ca896e2718a24b51b39b0e5f9c27e6.tar.gz |
10216 xargs does not properly detect when -P is negative
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com>
Reviewed by: Jason King <jason.brian.king@gmail.com>
Reviewed by: Andy Fiddaman <af@citrus-it.net>
Reviewed by: Andy Stormont <astormont@racktopsystems.com>
Reviewed by: Peter Tribble <peter.tribble@gmail.com>
Approved by: Dan McDonald <danmcd@joyent.com>
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/cmd/xargs/xargs.c | 12 | ||||
-rw-r--r-- | usr/src/man/man1/xargs.1 | 7 |
2 files changed, 14 insertions, 5 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. diff --git a/usr/src/man/man1/xargs.1 b/usr/src/man/man1/xargs.1 index 2647192818..42e8ea4959 100644 --- a/usr/src/man/man1/xargs.1 +++ b/usr/src/man/man1/xargs.1 @@ -43,8 +43,9 @@ .\" Copyright 1989 AT&T .\" Copyright (c) 1992, X/Open Company Limited. All Rights Reserved. .\" Portions Copyright (c) 2007, Sun Microsystems, Inc. All Rights Reserved. +.\" Copyright (c) 2018, Joyent, Inc. .\" -.TH XARGS 1 "May 28, 2017" +.TH XARGS 1 "September 13, 2018" .SH NAME xargs \- construct argument lists and invoke utility .SH SYNOPSIS @@ -211,7 +212,9 @@ otherwise, that particular invocation of \fIutility\fR is skipped. .ad .RS 15n Invokes \fIutility\fR using at most \fImaxprocs\fR (a positive decimal integer) -parallel child processes. +parallel child processes. If \fImaxprocs\fR is zero, then the system +will set a large upper bound to try and run as many processes as +possible. .RE .sp |