[U-Boot] [PATCH 4/9] mkenvimage: More error handling
David Wagner
david.wagner at free-electrons.com
Wed Nov 23 21:28:13 CET 2011
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.wagner at 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
More information about the U-Boot
mailing list