Browse Source

tools/kwbimage.c: fix parser error handling

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>
Andreas Bießmann 10 years ago
parent
commit
f411b8f227
1 changed files with 8 additions and 6 deletions
  1. 8 6
      tools/kwbimage.c

+ 8 - 6
tools/kwbimage.c

@@ -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->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;
 		}
+		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;
@@ -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);
-		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;
 		}
+		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;