From 3c54e4e46c2248ed9143c2f07670307185719331 Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Thu, 21 Sep 2017 14:18:04 +0200 Subject: ubi-utils: ubicrc32: process command line arguments first MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When a command line option is used (e.g. --version), the tool tries to open it as a file first, then *uppon success* attempts to process the command line options (including what it assumed to be an input file) which is obviously broken. This patch moves command line processing first and then attempts to open *the first unprocessed* argument. Reported-by: Uwe Kleine-König Signed-off-by: David Oberhollenzer --- ubi-utils/ubicrc32.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'ubi-utils') diff --git a/ubi-utils/ubicrc32.c b/ubi-utils/ubicrc32.c index 0ea255d..885f348 100644 --- a/ubi-utils/ubicrc32.c +++ b/ubi-utils/ubicrc32.c @@ -89,19 +89,18 @@ int main(int argc, char * const argv[]) int err = 0; uint32_t crc = UBI_CRC32_INIT; char buf[BUFSIZE]; - FILE *fp; - - if (argc > 1) { - fp = fopen(argv[1], "r"); - if (!fp) - return sys_errmsg("cannot open \"%s\"", argv[1]); - } else - fp = stdin; + FILE *fp = stdin; err = parse_opt(argc, argv); if (err) return err; + if (optind < argc) { + fp = fopen(argv[optind], "r"); + if (!fp) + return sys_errmsg("cannot open \"%s\"", argv[1]); + } + while (!feof(fp)) { size_t read; -- cgit v1.2.3