From: Chris Hofstaedtler Date: Fri, 18 Nov 2022 13:23:37 +0000 Subject: [PATCH] script: abort if unused arguments are given MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit 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 --- term-utils/script.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/term-utils/script.c b/term-utils/script.c index c918ecd..e03a1c3 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),