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

Reply via email to