Stop and print a helpful message if we encounter an
illegal token while parsing the DCD config, instead
of silently swallowing the error and pushing random
stuff into the DCD.

Signed-off-by: Lucas Stach <l.st...@pengutronix.de>
---
 scripts/imx/imx-image.c | 21 ++++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)

diff --git a/scripts/imx/imx-image.c b/scripts/imx/imx-image.c
index f4890c44d7fa..3a25c0929883 100644
--- a/scripts/imx/imx-image.c
+++ b/scripts/imx/imx-image.c
@@ -384,15 +384,30 @@ static int do_cmd_check(int argc, char *argv[])
 static int do_cmd_write_mem(int argc, char *argv[])
 {
        uint32_t addr, val, width;
+       char *end;
 
        if (argc != 4) {
                fprintf(stderr, "usage: wm [8|16|32] <addr> <val>\n");
                return -EINVAL;
        }
 
-       width = strtoul(argv[1], NULL, 0);
-       addr = strtoul(argv[2], NULL, 0);
-       val = strtoul(argv[3], NULL, 0);
+       width = strtoul(argv[1], &end, 0);
+       if (*end != '\0') {
+               fprintf(stderr, "illegal width token \"%s\"\n", argv[1]);
+               return -EINVAL;
+       }
+
+       addr = strtoul(argv[2], &end, 0);
+       if (*end != '\0') {
+               fprintf(stderr, "illegal address token \"%s\"\n", argv[2]);
+               return -EINVAL;
+       }
+
+       val = strtoul(argv[3], &end, 0);
+       if (*end != '\0') {
+               fprintf(stderr, "illegal value token \"%s\"\n", argv[3]);
+               return -EINVAL;
+       }
 
        width >>= 3;
 
-- 
2.0.1


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to