]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
tools/kwbimage.c: fix parser error handling
authorAndreas Bießmann <andreas.devel@googlemail.com>
Fri, 24 Oct 2014 21:25:52 +0000 (23:25 +0200)
committerTom Rini <trini@ti.com>
Sun, 11 Jan 2015 14:05:03 +0000 (09:05 -0500)
The two error checks for image_boot_mode_id and image_nand_ecc_mode_id where
wrong and would never fail, fix that!

This was detected by Apple's clang compiler:
---8<---
  HOSTCC  tools/kwbimage.o
tools/kwbimage.c:553:20: warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare]
                if (el->bootfrom < 0) {
                    ~~~~~~~~~~~~ ^ ~
tools/kwbimage.c:571:23: warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare]
                if (el->nandeccmode < 0) {
                    ~~~~~~~~~~~~~~~ ^ ~
2 warnings generated.
--->8---

Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
Acked-By: Jeroen Hofstee <jeroen@myspectrum.nl>
tools/kwbimage.c

index 2c302e5d4981e94c1969f47703da03062495fd01..807d46668be78ee90b1103b2e5b56460dbc6afe0 100644 (file)
@@ -554,13 +554,14 @@ static int image_create_config_parse_oneline(char *line,
                el->version = atoi(value);
        } else if (!strcmp(keyword, "BOOT_FROM")) {
                char *value = strtok_r(NULL, deliminiters, &saveptr);
                el->version = atoi(value);
        } else if (!strcmp(keyword, "BOOT_FROM")) {
                char *value = strtok_r(NULL, deliminiters, &saveptr);
-               el->type = IMAGE_CFG_BOOT_FROM;
-               el->bootfrom = image_boot_mode_id(value);
-               if (el->bootfrom < 0) {
+               int ret = image_boot_mode_id(value);
+               if (ret < 0) {
                        fprintf(stderr,
                                "Invalid boot media '%s'\n", value);
                        return -1;
                }
                        fprintf(stderr,
                                "Invalid boot media '%s'\n", value);
                        return -1;
                }
+               el->type = IMAGE_CFG_BOOT_FROM;
+               el->bootfrom = ret;
        } else if (!strcmp(keyword, "NAND_BLKSZ")) {
                char *value = strtok_r(NULL, deliminiters, &saveptr);
                el->type = IMAGE_CFG_NAND_BLKSZ;
        } else if (!strcmp(keyword, "NAND_BLKSZ")) {
                char *value = strtok_r(NULL, deliminiters, &saveptr);
                el->type = IMAGE_CFG_NAND_BLKSZ;
@@ -572,13 +573,14 @@ static int image_create_config_parse_oneline(char *line,
                        strtoul(value, NULL, 16);
        } else if (!strcmp(keyword, "NAND_ECC_MODE")) {
                char *value = strtok_r(NULL, deliminiters, &saveptr);
                        strtoul(value, NULL, 16);
        } else if (!strcmp(keyword, "NAND_ECC_MODE")) {
                char *value = strtok_r(NULL, deliminiters, &saveptr);
-               el->type = IMAGE_CFG_NAND_ECC_MODE;
-               el->nandeccmode = image_nand_ecc_mode_id(value);
-               if (el->nandeccmode < 0) {
+               int ret = image_nand_ecc_mode_id(value);
+               if (ret < 0) {
                        fprintf(stderr,
                                "Invalid NAND ECC mode '%s'\n", value);
                        return -1;
                }
                        fprintf(stderr,
                                "Invalid NAND ECC mode '%s'\n", value);
                        return -1;
                }
+               el->type = IMAGE_CFG_NAND_ECC_MODE;
+               el->nandeccmode = ret;
        } else if (!strcmp(keyword, "NAND_PAGE_SIZE")) {
                char *value = strtok_r(NULL, deliminiters, &saveptr);
                el->type = IMAGE_CFG_NAND_PAGESZ;
        } else if (!strcmp(keyword, "NAND_PAGE_SIZE")) {
                char *value = strtok_r(NULL, deliminiters, &saveptr);
                el->type = IMAGE_CFG_NAND_PAGESZ;