From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3716 invoked by alias); 30 Dec 2010 21:09:08 -0000 Received: (qmail 3708 invoked by uid 22791); 30 Dec 2010 21:09:07 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00,TW_RG,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from smtp.gentoo.org (HELO smtp.gentoo.org) (140.211.166.183) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 30 Dec 2010 21:09:03 +0000 Received: from localhost.localdomain (localhost [127.0.0.1]) by smtp.gentoo.org (Postfix) with ESMTP id 8F1261B41C1; Thu, 30 Dec 2010 21:09:01 +0000 (UTC) From: Mike Frysinger To: gdb-patches@sourceware.org Cc: toolchain-devel@blackfin.uclinux.org Subject: [PATCH] sim: check asprintf return values Date: Thu, 30 Dec 2010 21:24:00 -0000 Message-Id: <1293743311-13288-1-git-send-email-vapier@gentoo.org> X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2010-12/txt/msg00562.txt.bz2 These are the last sources of build warnings (asprintf usage) that I see. Signed-off-by: Mike Frysinger 2010-12-30 Mike Frysinger * sim-module.c (sim_pre_argv_init): Return SIM_RC_FAIL when asprintf fails. * sim-options.c (sim_parse_args): Issue an error and return SIM_RC_FAIL when asprintf fails. * sim-utils.c (sim_do_commandf): Issue an error and return when asprintf fails. * sim-watch.c (sim_watchpoint_install): Return SIM_RC_FAIL when asprintf fails. --- sim/common/sim-module.c | 3 ++- sim/common/sim-options.c | 7 ++++++- sim/common/sim-utils.c | 7 ++++++- sim/common/sim-watch.c | 7 ++++--- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/sim/common/sim-module.c b/sim/common/sim-module.c index 0180d07..1c48b29 100644 --- a/sim/common/sim-module.c +++ b/sim/common/sim-module.c @@ -88,7 +88,8 @@ sim_pre_argv_init (SIM_DESC sd, const char *myname) for (i = 0; i < MAX_NR_PROCESSORS; ++i) { char *name; - asprintf (&name, "cpu%d", i); + if (asprintf (&name, "cpu%d", i) < 0) + return SIM_RC_FAIL; CPU_NAME (STATE_CPU (sd, i)) = name; } } diff --git a/sim/common/sim-options.c b/sim/common/sim-options.c index c01cce5..2df91e3 100644 --- a/sim/common/sim-options.c +++ b/sim/common/sim-options.c @@ -621,7 +621,12 @@ sim_parse_args (SIM_DESC sd, char **argv) char *name; *lp = opt->opt; /* Prepend --- to the option. */ - asprintf (&name, "%s-%s", CPU_NAME (cpu), lp->name); + if (asprintf (&name, "%s-%s", CPU_NAME (cpu), lp->name) < 0) + { + sim_io_eprintf (sd, "internal error, out of memory"); + result = SIM_RC_FAIL; + break; + } lp->name = name; /* Dynamically assign `val' numbers for long options. */ lp->val = i++; diff --git a/sim/common/sim-utils.c b/sim/common/sim-utils.c index 9f9104e..a50358a 100644 --- a/sim/common/sim-utils.c +++ b/sim/common/sim-utils.c @@ -336,7 +336,12 @@ sim_do_commandf (SIM_DESC sd, va_list ap; char *buf; va_start (ap, fmt); - vasprintf (&buf, fmt, ap); + if (vasprintf (&buf, fmt, ap) < 0) + { + sim_io_eprintf (sd, "%s: asprintf failed for `%s'\n", + STATE_MY_NAME (sd), fmt); + return; + } sim_do_command (sd, buf); va_end (ap); free (buf); diff --git a/sim/common/sim-watch.c b/sim/common/sim-watch.c index 1bf2703..c1d33be 100644 --- a/sim/common/sim-watch.c +++ b/sim/common/sim-watch.c @@ -411,9 +411,10 @@ sim_watchpoint_install (SIM_DESC sd) char *name; int nr = interrupt_nr * nr_watchpoint_types + type; OPTION *option = &int_options[nr]; - asprintf (&name, "watch-%s-%s", - watchpoint_type_to_str (sd, type), - interrupt_nr_to_str (sd, interrupt_nr)); + if (asprintf (&name, "watch-%s-%s", + watchpoint_type_to_str (sd, type), + interrupt_nr_to_str (sd, interrupt_nr)) < 0) + return SIM_RC_FAIL; option->opt.name = name; option->opt.has_arg = required_argument; option->opt.val = type_to_option (sd, type, interrupt_nr); -- 1.7.3.1