diff options
author | Karthikeyan Ramasubramanian <kramasub@google.com> | 2022-08-08 14:30:03 -0600 |
---|---|---|
committer | Martin L Roth <gaumless@gmail.com> | 2022-09-04 17:06:21 +0000 |
commit | 0dd3cf4534c4ab9497b5c7b3af5e0ed8b9e919df (patch) | |
tree | 0ddf07cd4cbc75c1f3431d7a793639e5dfdd4e05 | |
parent | 7dd42da9a064750699058b2a9d66d84bc314b221 (diff) |
util/amdfwtool/amdfwread: Fix incorrect option index
index I/O argument to getopt_long is not the index to argv. Instead it
is an index into the optlong array corresponding to the parsed option.
Also getopt() uses a global variable optind to track the index of the
next argument to be processed. Use the optindex variable as an index to
extract the filename from argv.
BUG=None
TEST=Build and use amdfwread to read the Soft-fuse bits from Guybrush
BIOS image. Observed no changes before and after the changes.
Change-Id: I33c74a0c8e12c5af76954524cf7294b7541d286b
Signed-off-by: Karthikeyan Ramasubramanian <kramasub@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/66553
Reviewed-by: Robert Zieba <robertzieba@google.com>
Reviewed-by: Raul Rangel <rrangel@chromium.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r-- | util/amdfwtool/amdfwread.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/util/amdfwtool/amdfwread.c b/util/amdfwtool/amdfwread.c index 1a95c5c267..c9da3d883d 100644 --- a/util/amdfwtool/amdfwread.c +++ b/util/amdfwtool/amdfwread.c @@ -179,19 +179,18 @@ int main(int argc, char **argv) char *fw_file = NULL; int selected_functions = 0; - int index = 0; while (1) { - int opt = getopt_long(argc, argv, optstring, long_options, &index); + int opt = getopt_long(argc, argv, optstring, long_options, NULL); if (opt == -1) { - index++; - if (index >= argc) { - /* Print usage if we didn't get any arguments */ + if (optind != (argc - 1)) { + /* Print usage if one and only one option i.e. filename is + not found. */ print_usage(); return 0; } - fw_file = argv[index]; + fw_file = argv[optind]; break; } |