summaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
authorKarthikeyan Ramasubramanian <kramasub@google.com>2022-08-08 14:30:03 -0600
committerMartin L Roth <gaumless@gmail.com>2022-09-04 17:06:21 +0000
commit0dd3cf4534c4ab9497b5c7b3af5e0ed8b9e919df (patch)
tree0ddf07cd4cbc75c1f3431d7a793639e5dfdd4e05 /util
parent7dd42da9a064750699058b2a9d66d84bc314b221 (diff)
downloadcoreboot-0dd3cf4534c4ab9497b5c7b3af5e0ed8b9e919df.tar.gz
coreboot-0dd3cf4534c4ab9497b5c7b3af5e0ed8b9e919df.tar.bz2
coreboot-0dd3cf4534c4ab9497b5c7b3af5e0ed8b9e919df.zip
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>
Diffstat (limited to 'util')
-rw-r--r--util/amdfwtool/amdfwread.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/util/amdfwtool/amdfwread.c b/util/amdfwtool/amdfwread.c
index 1a95c5c2677a..c9da3d883d96 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;
}