From patchwork Thu Jan 5 18:44:55 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Wagner X-Patchwork-Id: 134528 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 2328F1007D7 for ; Fri, 6 Jan 2012 05:45:53 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 41A082854D; Thu, 5 Jan 2012 19:45:43 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id amFPJ28i9u0x; Thu, 5 Jan 2012 19:45:43 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id D95D328573; Thu, 5 Jan 2012 19:45:30 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id D4E0728549 for ; Thu, 5 Jan 2012 19:45:27 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id blnV22bcfp1d for ; Thu, 5 Jan 2012 19:45:27 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mail.free-electrons.com (mail.free-electrons.com [88.190.12.23]) by theia.denx.de (Postfix) with ESMTP id 465F928555 for ; Thu, 5 Jan 2012 19:45:23 +0100 (CET) Received: by mail.free-electrons.com (Postfix, from userid 106) id A9B8F24A; Thu, 5 Jan 2012 19:40:46 +0100 (CET) Received: from localhost.localdomain (bon31-3-82-226-48-55.fbx.proxad.net [82.226.48.55]) by mail.free-electrons.com (Postfix) with ESMTPSA id 0272E192; Thu, 5 Jan 2012 19:40:35 +0100 (CET) From: David Wagner To: u-boot@lists.denx.de Date: Thu, 5 Jan 2012 19:44:55 +0100 Message-Id: <1325789099-9260-4-git-send-email-david.wagner@free-electrons.com> X-Mailer: git-send-email 1.7.5.4 In-Reply-To: <1325789099-9260-1-git-send-email-david.wagner@free-electrons.com> References: <20120105162831.E91BE1FD3DA@gemini.denx.de> <1325789099-9260-1-git-send-email-david.wagner@free-electrons.com> Cc: Thomas Petazzoni Subject: [U-Boot] [PATCHv2 4/8] mkenvimage: More error handling X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.11 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de 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 --- tools/mkenvimage.c | 32 ++++++++++++++++++++++++++++++-- 1 files changed, 30 insertions(+), 2 deletions(-) diff --git a/tools/mkenvimage.c b/tools/mkenvimage.c index bc18736..eb9a8f2 100644 --- a/tools/mkenvimage.c +++ b/tools/mkenvimage.c @@ -93,7 +93,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) { @@ -109,7 +119,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(prg); return EXIT_SUCCESS; @@ -166,7 +186,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);