From: Chris Hofstaedtler Date: Fri, 18 Nov 2022 13:23:37 +0000 (+0000) Subject: script: abort if unused arguments are given X-Git-Tag: v2.39-rc1~412 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ec96a89ed9551ffacfc58b3056c8070444e3a2f3;p=thirdparty%2Futil-linux.git script: abort if unused arguments are given scripts uses either a free-standing "file" argument, or the value passed as --log-out "file". Additional filenames are ignored. They are also ignored if --log-in "file" is given, as it turns off output logging by default (can still be overriden by adding --log-out). Avoid surprises when passing multiple filenames by writing usage message instead. [kzak@redhat.com: - use errtryhelp() rather than usage()] Signed-off-by: Chris Hofstaedtler Reported-by: наб Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1016193 Signed-off-by: Karel Zak --- diff --git a/term-utils/script.c b/term-utils/script.c index 516a6cf93e..7752c29140 100644 --- a/term-utils/script.c +++ b/term-utils/script.c @@ -889,9 +889,11 @@ int main(int argc, char **argv) /* default if no --log-* specified */ if (!outfile && !infile) { - if (argc > 0) + if (argc > 0) { outfile = argv[0]; - else { + argc--; + argv++; + } else { die_if_link(&ctl, DEFAULT_TYPESCRIPT_FILENAME); outfile = DEFAULT_TYPESCRIPT_FILENAME; } @@ -900,6 +902,13 @@ int main(int argc, char **argv) log_associate(&ctl, &ctl.out, outfile, SCRIPT_FMT_RAW); } + if (argc > 0) { + /* only one filename is accepted. if --log-out was given, + * freestanding filename is ignored */ + warnx(_("unexpected number of arguments")); + errtryhelp(EXIT_FAILURE); + } + if (timingfile) { /* the old SCRIPT_FMT_TIMING_SIMPLE should be used when * recoding output only (just for backward compatibility),