Verbosly fail if the target environment size or the padding byte are badly formated.
Verbosly fail if something bad happens when reading from standard input. Signed-off-by: David Wagner <david.wag...@free-electrons.com> --- tools/mkenvimage.c | 32 ++++++++++++++++++++++++++++++-- 1 files changed, 30 insertions(+), 2 deletions(-) diff --git a/tools/mkenvimage.c b/tools/mkenvimage.c index 6af0d56..b6e7f14 100644 --- a/tools/mkenvimage.c +++ b/tools/mkenvimage.c @@ -82,7 +82,17 @@ int main(int argc, char **argv) switch (option) { case 's': datasize = strtol(optarg, NULL, 0); - break; + if (!errno) + break; + + if (errno == ERANGE) + fprintf(stderr, "Bad integer format: %s\n", + optarg); + else + fprintf(stderr, "Error while parsing %s: %s\n", + optarg, strerror(errno)); + + return EXIT_FAILURE; case 'o': bin_filename = strdup(optarg); if (!bin_filename) { @@ -98,7 +108,17 @@ int main(int argc, char **argv) break; case 'p': padbyte = strtol(optarg, NULL, 0); - break; + if (!errno) + break; + + if (errno == ERANGE) + fprintf(stderr, "Bad integer format: %s\n", + optarg); + else + fprintf(stderr, "Error while parsing %s: %s\n", + optarg, strerror(errno)); + + return EXIT_FAILURE; case 'h': usage(argv[0]); return EXIT_SUCCESS; @@ -147,7 +167,15 @@ int main(int argc, char **argv) do { filebuf = realloc(filebuf, readlen); + if (!filebuf) { + fprintf(stderr, "Can't realloc memory for the input file buffer\n"); + return EXIT_FAILURE; + } readbytes = read(txt_fd, filebuf + filesize, readlen); + if (errno) { + fprintf(stderr, "Error while reading stdin: %s\n", strerror(errno)); + return EXIT_FAILURE; + } filesize += readbytes; } while (readbytes == readlen); -- 1.7.7.3 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot