diff --git a/usr.bin/xargs/tests/regress.n2147483647.out b/usr.bin/xargs/tests/regress.n2147483647.out new file mode 100644 index 000000000000..cc32a92a2199 --- /dev/null +++ b/usr.bin/xargs/tests/regress.n2147483647.out @@ -0,0 +1 @@ +quick brown fox jumped over the lazy dog diff --git a/usr.bin/xargs/tests/regress.sh b/usr.bin/xargs/tests/regress.sh index ed81d66bf2a6..fed3ab9c8461 100644 --- a/usr.bin/xargs/tests/regress.sh +++ b/usr.bin/xargs/tests/regress.sh @@ -5,6 +5,7 @@ echo 1..21 REGRESSION_START($1) REGRESSION_TEST(`normal', `xargs echo The <${SRCDIR}/regress.in') +REGRESSION_TEST(`n2147483647', `xargs -n2147483647 <${SRCDIR}/regress.in') REGRESSION_TEST(`I', `xargs -I% echo The % % % %% % % <${SRCDIR}/regress.in') REGRESSION_TEST(`J', `xargs -J% echo The % again. <${SRCDIR}/regress.in') REGRESSION_TEST(`L', `xargs -L3 echo <${SRCDIR}/regress.in') diff --git a/usr.bin/xargs/xargs.c b/usr.bin/xargs/xargs.c index e6f8619bb8d1..cd6b7da1a186 100644 --- a/usr.bin/xargs/xargs.c +++ b/usr.bin/xargs/xargs.c @@ -257,7 +257,7 @@ main(int argc, char *argv[]) * the maximum arguments to be read from stdin and the trailing * NULL. */ - linelen = 1 + argc + nargs + 1; + linelen = 1 + argc + (size_t)nargs + 1; if ((av = bxp = malloc(linelen * sizeof(char *))) == NULL) errx(1, "malloc failed");