From f411b8f2270bc75113d60f2ad662f25de6242b7d Mon Sep 17 00:00:00 2001
From: =?utf8?q?Andreas=20Bie=C3=9Fmann?= <andreas.devel@googlemail.com>
Date: Fri, 24 Oct 2014 23:25:52 +0200
Subject: [PATCH] tools/kwbimage.c: fix parser error handling
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit

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 | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/tools/kwbimage.c b/tools/kwbimage.c
index 2c302e5d49..807d46668b 100644
--- a/tools/kwbimage.c
+++ b/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;
-- 
2.39.5