From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14662 invoked by alias); 14 Apr 2009 18:39:59 -0000 Received: (qmail 14649 invoked by uid 22791); 14 Apr 2009 18:39:57 -0000 X-SWARE-Spam-Status: No, hits=-2.4 required=5.0 tests=AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from mailhost.u-strasbg.fr (HELO mailhost.u-strasbg.fr) (130.79.200.152) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 14 Apr 2009 18:39:50 +0000 Received: from baal.u-strasbg.fr (baal.u-strasbg.fr [IPv6:2001:660:2402::41]) by mailhost.u-strasbg.fr (8.14.2/jtpda-5.5pre1) with ESMTP id n3EId1YV097482 ; Tue, 14 Apr 2009 20:39:01 +0200 (CEST) Received: from mailserver.u-strasbg.fr (ms3.u-strasbg.fr [IPv6:2001:660:2402:d::12]) by baal.u-strasbg.fr (8.14.0/jtpda-5.5pre1) with ESMTP id n3EId1SL045532 ; Tue, 14 Apr 2009 20:39:01 +0200 (CEST) (envelope-from muller@ics.u-strasbg.fr) Received: from d620muller (lec67-4-82-230-53-140.fbx.proxad.net [82.230.53.140]) (user=mullerp mech=LOGIN) by mailserver.u-strasbg.fr (8.14.3/jtpda-5.5pre1) with ESMTP id n3EId0II054644 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NO) ; Tue, 14 Apr 2009 20:39:01 +0200 (CEST) (envelope-from muller@ics.u-strasbg.fr) From: "Pierre Muller" To: "'Joel Brobecker'" , "'Pedro Alves'" Cc: References: <000401c9b758$2c1cf4b0$8456de10$@u-strasbg.fr> <200904111620.17103.pedro@codesourcery.com> <20090414182432.GP7535@adacore.com> In-Reply-To: <20090414182432.GP7535@adacore.com> Subject: [RFA] Ada ARI fix for sprintf version 2 Date: Tue, 14 Apr 2009 18:39:00 -0000 Message-ID: <006e01c9bd30$49a0bac0$dce23040$@u-strasbg.fr> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 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: 2009-04/txt/msg00275.txt.bz2 Here is an updated patch for ada sources removing sprintf usage. Thanks to Pedro and Joel for the feedback. Joel, is this OK? Pierre Muller Pascal language support maintainer for GDB 2009-04-14 Pierre Muller ARI fix: sprintf rule. * ada-exp.y (convert_char_literal): Replace sprintf by xsnprintf. * ada-lang.c (add_angle_brackets): Use xstrprintf. (ada_decode): Replace sprintf by xsnprintf. (find_old_style_renaming_symbol): Ditto. (ada_to_fixed_type_1, ada_enum_name): Ditto. Index: ada-exp.y =================================================================== RCS file: /cvs/src/src/gdb/ada-exp.y,v retrieving revision 1.36 diff -u -p -r1.36 ada-exp.y --- ada-exp.y 24 Mar 2009 02:08:23 -0000 1.36 +++ ada-exp.y 14 Apr 2009 18:34:03 -0000 @@ -1452,7 +1452,7 @@ convert_char_literal (struct type *type, if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM) return val; - sprintf (name, "QU%02x", (int) val); + xsnprintf (name, sizeof (name), "QU%02x", (int) val); for (f = 0; f < TYPE_NFIELDS (type); f += 1) { if (strcmp (name, TYPE_FIELD_NAME (type, f)) == 0) Index: ada-lang.c =================================================================== RCS file: /cvs/src/src/gdb/ada-lang.c,v retrieving revision 1.205 diff -u -p -r1.205 ada-lang.c --- ada-lang.c 24 Mar 2009 02:07:06 -0000 1.205 +++ ada-lang.c 14 Apr 2009 18:34:06 -0000 @@ -337,9 +337,7 @@ add_angle_brackets (const char *str) static char *result = NULL; xfree (result); - result = (char *) xmalloc ((strlen (str) + 3) * sizeof (char)); - - sprintf (result, "<%s>", str); + result = xstrprintf ("<%s>", str); return result; } @@ -1114,7 +1112,7 @@ Suppress: if (encoded[0] == '<') strcpy (decoded, encoded); else - sprintf (decoded, "<%s>", encoded); + xsnprintf (decoded, decoding_buffer_size, "<%s>", encoded); return decoded; } @@ -6609,13 +6607,14 @@ find_old_style_renaming_symbol (const ch function_name = function_name + 5; rename = (char *) alloca (rename_len * sizeof (char)); - sprintf (rename, "%s__%s___XR", function_name, name); + xsnprintf (rename, rename_len * sizeof (char), "%s__%s___XR", + function_name, name); } else { const int rename_len = strlen (name) + 6; rename = (char *) alloca (rename_len * sizeof (char)); - sprintf (rename, "%s___XR", name); + xsnprintf (rename, rename_len * sizeof (char), "%s___XR", name); } return ada_find_any_symbol (rename); @@ -7308,7 +7307,7 @@ ada_to_fixed_type_1 (struct type *type, int xvz_found = 0; LONGEST size; - sprintf (xvz_name, "%s___XVZ", name); + xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name); size = get_int_var_value (xvz_name, &xvz_found); if (xvz_found && TYPE_LENGTH (fixed_record_type) != size) { @@ -7760,11 +7759,11 @@ ada_enum_name (const char *name) GROW_VECT (result, result_len, 16); if (isascii (v) && isprint (v)) - sprintf (result, "'%c'", v); + xsnprintf (result, result_len, "'%c'", v); else if (name[1] == 'U') - sprintf (result, "[\"%02x\"]", v); + xsnprintf (result, result_len, "[\"%02x\"]", v); else - sprintf (result, "[\"%04x\"]", v); + xsnprintf (result, result_len, "[\"%04x\"]", v); return result; }