[PATCH v2] scripts: kwbimage: fix imagebuild on 32bit host system

Michael Grzeschik m.grzeschik at pengutronix.de
Sun Jan 26 12:12:21 EST 2014


We have to use strtoul to run the tool working on 32bit systems.
Otherwise it will generate signed numbers for strings representing
values with the 32nd bit set.

Signed-off-by: Michael Grzeschik <m.grzeschik at pengutronix.de>
---
 scripts/kwbimage.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/scripts/kwbimage.c b/scripts/kwbimage.c
index 82cf21c..cd87456 100644
--- a/scripts/kwbimage.c
+++ b/scripts/kwbimage.c
@@ -1024,20 +1024,20 @@ static int image_create_config_parse_oneline(char *line,
 	} else if (!strcmp(keyword, "DESTADDR")) {
 		char *value = strtok_r(NULL, " ", &saveptr);
 		el->type = IMAGE_CFG_DEST_ADDR;
-		el->dstaddr = strtol(value, NULL, 16);
+		el->dstaddr = strtoul(value, NULL, 16);
 	} else if (!strcmp(keyword, "EXECADDR")) {
 		char *value = strtok_r(NULL, " ", &saveptr);
 		el->type = IMAGE_CFG_EXEC_ADDR;
-		el->execaddr = strtol(value, NULL, 16);
+		el->execaddr = strtoul(value, NULL, 16);
 	} else if (!strcmp(keyword, "NAND_BLKSZ")) {
 		char *value = strtok_r(NULL, " ", &saveptr);
 		el->type = IMAGE_CFG_NAND_BLKSZ;
-		el->nandblksz = strtol(value, NULL, 16);
+		el->nandblksz = strtoul(value, NULL, 16);
 	} else if (!strcmp(keyword, "NAND_BADBLK_LOCATION")) {
 		char *value = strtok_r(NULL, " ", &saveptr);
 		el->type = IMAGE_CFG_NAND_BADBLK_LOCATION;
 		el->nandbadblklocation =
-			strtol(value, NULL, 16);
+			strtoul(value, NULL, 16);
 	} else if (!strcmp(keyword, "NAND_ECCMODE")) {
 		char *value = strtok_r(NULL, " ", &saveptr);
 		el->type = IMAGE_CFG_NAND_ECC_MODE;
@@ -1050,7 +1050,7 @@ static int image_create_config_parse_oneline(char *line,
 	} else if (!strcmp(keyword, "NAND_PAGESZ")) {
 		char *value = strtok_r(NULL, " ", &saveptr);
 		el->type = IMAGE_CFG_NAND_PAGESZ;
-		el->nandpagesz = strtol(value, NULL, 16);
+		el->nandpagesz = strtoul(value, NULL, 16);
 	} else if (!strcmp(keyword, "BINARY")) {
 		char *value = strtok_r(NULL, " ", &saveptr);
 		int argi = 0;
@@ -1061,7 +1061,7 @@ static int image_create_config_parse_oneline(char *line,
 			value = strtok_r(NULL, " ", &saveptr);
 			if (!value)
 				break;
-			el->binary.args[argi] = strtol(value, NULL, 16);
+			el->binary.args[argi] = strtoul(value, NULL, 16);
 			argi++;
 			if (argi >= BINARY_MAX_ARGS) {
 				fprintf(stderr,
@@ -1080,8 +1080,8 @@ static int image_create_config_parse_oneline(char *line,
 		}
 
 		el->type = IMAGE_CFG_DATA;
-		el->regdata.raddr = strtol(value1, NULL, 16);
-		el->regdata.rdata = strtol(value2, NULL, 16);
+		el->regdata.raddr = strtoul(value1, NULL, 16);
+		el->regdata.rdata = strtoul(value2, NULL, 16);
 	} else if (!strcmp(keyword, "PAYLOAD")) {
 		char *value = strtok_r(NULL, " ", &saveptr);
 		el->type = IMAGE_CFG_PAYLOAD;
-- 
1.8.5.2




More information about the barebox mailing list