From 3d7b83b6718e54c7305b24dd73b44af1c11fc721 Mon Sep 17 00:00:00 2001 From: Martin Sebor Date: Thu, 1 Sep 2016 22:47:49 +0000 Subject: [PATCH] c-ada-spec.c (dump_ada_function_declaration): Increase buffer size to guarantee it fits the output of the formatted function... gcc/c-family/ChangeLog: * c-ada-spec.c (dump_ada_function_declaration): Increase buffer size to guarantee it fits the output of the formatted function regardless of its arguments. gcc/cp/ChangeLog: * mangle.c: Increase buffer size to guarantee it fits the output of the formatted function regardless of its arguments. gcc/go/ChangeLog: * gofrontend/expressions.cc: Increase buffer size to guarantee it fits the output of the formatted function regardless of its arguments. gcc/java/ChangeLog: * decl.c (give_name_to_locals): Increase buffer size to guarantee it fits the output of the formatted function regardless of its arguments. * mangle_name.c (append_unicode_mangled_name): Same. gcc/ChangeLog: * genmatch.c (parser::parse_expr): Increase buffer size to guarantee it fits the output of the formatted function regardless of its arguments. * gcc/genmodes.c (parser::parse_expr): Same. * gimplify.c (gimplify_asm_expr): Same. * passes.c (pass_manager::register_one_dump_file): Same. * print-tree.c (print_node): Same. From-SVN: r239949 --- gcc/ChangeLog | 10 ++++++++++ gcc/c-family/ChangeLog | 6 ++++++ gcc/c-family/c-ada-spec.c | 2 +- gcc/cp/ChangeLog | 5 +++++ gcc/cp/mangle.c | 4 +++- gcc/genmatch.c | 3 ++- gcc/genmodes.c | 3 ++- gcc/gimplify.c | 5 +++-- gcc/go/ChangeLog | 6 ++++++ gcc/go/gofrontend/expressions.cc | 3 ++- gcc/java/ChangeLog | 7 +++++++ gcc/java/decl.c | 3 ++- gcc/java/mangle_name.c | 6 ++++-- gcc/passes.c | 6 ++++-- gcc/print-tree.c | 14 ++++++++++---- 15 files changed, 67 insertions(+), 16 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index aa5b1e00738..854bcc0cbdf 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2016-09-01 Martin Sebor + + * genmatch.c (parser::parse_expr): Increase buffer size to guarantee + it fits the output of the formatted function regardless of its + arguments. + * gcc/genmodes.c (parser::parse_expr): Same. + * gimplify.c (gimplify_asm_expr): Same. + * passes.c (pass_manager::register_one_dump_file): Same. + * print-tree.c (print_node): Same. + 2016-09-01 Segher Boessenkool * config/rs6000/altivec.md: Use VSCR_REGNO instead of 110 throughout. diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 8a40f75da4f..622a288daac 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,9 @@ +2016-09-01 Martin Sebor + + * c-ada-spec.c (dump_ada_function_declaration): Increase buffer + size to guarantee it fits the output of the formatted function + regardless of its arguments. + 2016-09-01 Marek Polacek PR c/7652 diff --git a/gcc/c-family/c-ada-spec.c b/gcc/c-family/c-ada-spec.c index a4e0c38cef9..6a8e04b8d36 100644 --- a/gcc/c-family/c-ada-spec.c +++ b/gcc/c-family/c-ada-spec.c @@ -1603,7 +1603,7 @@ dump_ada_function_declaration (pretty_printer *buffer, tree func, { tree arg; const tree node = TREE_TYPE (func); - char buf[16]; + char buf[17]; int num = 0, num_args = 0, have_args = true, have_ellipsis = false; /* Compute number of arguments. */ diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e68ee629600..c5738561dc1 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2016-09-01 Martin Sebor + + * mangle.c: Increase buffer size to guarantee it fits the output + of the formatted function regardless of its arguments. + 2016-09-01 Marek Polacek PR c/7652 diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c index d34743c9c68..bd23260c088 100644 --- a/gcc/cp/mangle.c +++ b/gcc/cp/mangle.c @@ -1740,7 +1740,9 @@ static void write_real_cst (const tree value) { long target_real[4]; /* largest supported float */ - char buffer[9]; /* eight hex digits in a 32-bit number */ + /* Buffer for eight hex digits in a 32-bit number but big enough + even for 64-bit long to avoid warnings. */ + char buffer[17]; int i, limit, dir; tree type = TREE_TYPE (value); diff --git a/gcc/genmatch.c b/gcc/genmatch.c index 02e945af71d..6195a3b7ed0 100644 --- a/gcc/genmatch.c +++ b/gcc/genmatch.c @@ -4051,7 +4051,8 @@ parser::parse_expr () else if (force_capture) { unsigned num = capture_ids->elements (); - char id[8]; + /* Big enough for a 32-bit UINT_MAX plus prefix. */ + char id[13]; bool existed; sprintf (id, "__%u", num); capture_ids->get_or_insert (xstrdup (id), &existed); diff --git a/gcc/genmodes.c b/gcc/genmodes.c index 1170d4f5b0c..92ca055f4eb 100644 --- a/gcc/genmodes.c +++ b/gcc/genmodes.c @@ -486,7 +486,8 @@ make_vector_modes (enum mode_class cl, unsigned int width, { struct mode_data *m; struct mode_data *v; - char buf[8]; + /* Big enough for a 32-bit UINT_MAX plus the text. */ + char buf[12]; unsigned int ncomponents; enum mode_class vclass = vector_class (cl); diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 288b4727dd8..21e1c093385 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -5346,7 +5346,8 @@ gimplify_asm_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p) flexibility, split it into separate input and output operands. */ tree input; - char buf[10]; + /* Buffer big enough to format a 32-bit UINT_MAX into. */ + char buf[11]; /* Turn the in/out constraint into an output constraint. */ char *p = xstrdup (constraint); @@ -5356,7 +5357,7 @@ gimplify_asm_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p) /* And add a matching input constraint. */ if (allows_reg) { - sprintf (buf, "%d", i); + sprintf (buf, "%u", i); /* If there are multiple alternatives in the constraint, handle each of them individually. Those that allow register diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog index 2052a977029..4c75010e900 100644 --- a/gcc/go/ChangeLog +++ b/gcc/go/ChangeLog @@ -1,3 +1,9 @@ +2016-09-01 Martin Sebor + + * gofrontend/expressions.cc: Increase buffer size to guarantee + it fits the output of the formatted function regardless of its + arguments. + 2016-08-29 Ian Lance Taylor * lang.opt (fgo-c-header, fgo-compiling-runtime): New options. diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc index 803611d5442..99f9f669407 100644 --- a/gcc/go/gofrontend/expressions.cc +++ b/gcc/go/gofrontend/expressions.cc @@ -9050,7 +9050,8 @@ Call_expression::do_flatten(Gogo* gogo, Named_object*, Location loc = this->location(); int i = 0; - char buf[10]; + /* Buffer large enough for INT_MAX plus the prefix. */ + char buf[14]; for (Typed_identifier_list::const_iterator p = results->begin(); p != results->end(); ++p, ++i) diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 74c5be8cc5d..781fecdefc1 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,10 @@ +2016-09-01 Martin Sebor + + * decl.c (give_name_to_locals): Increase buffer size to guarantee + it fits the output of the formatted function regardless of its + arguments. + * mangle_name.c (append_unicode_mangled_name): Same. + 2016-08-26 Richard Biener java/ diff --git a/gcc/java/decl.c b/gcc/java/decl.c index 36989d380ab..70eac315113 100644 --- a/gcc/java/decl.c +++ b/gcc/java/decl.c @@ -1721,7 +1721,8 @@ give_name_to_locals (JCF *jcf) DECL_NAME (parm) = get_identifier ("this"); else { - char buffer[12]; + /* Buffer large enough for INT_MAX plus prefix. */ + char buffer[15]; sprintf (buffer, "ARG_%d", arg_i); DECL_NAME (parm) = get_identifier (buffer); } diff --git a/gcc/java/mangle_name.c b/gcc/java/mangle_name.c index 00374dbd298..7627c5d5df3 100644 --- a/gcc/java/mangle_name.c +++ b/gcc/java/mangle_name.c @@ -231,7 +231,8 @@ void append_gpp_mangled_name (const char *name, int len) { int encoded_len, needs_escapes; - char buf[6]; + /* Buffer large enough for INT_MIN. */ + char buf[9]; MANGLE_CXX_KEYWORDS (name, len); @@ -270,7 +271,8 @@ append_unicode_mangled_name (const char *name, int len) /* Everything else needs encoding */ else { - char buf [9]; + /* Buffer large enough for UINT_MAX plus the prefix. */ + char buf [13]; if (ch == '_' || ch == 'U') { /* Prepare to recognize __U */ diff --git a/gcc/passes.c b/gcc/passes.c index c7d7dbe7e91..07ebf8b4a2f 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -771,7 +771,9 @@ pass_manager::register_one_dump_file (opt_pass *pass) { char *dot_name, *flag_name, *glob_name; const char *name, *full_name, *prefix; - char num[10]; + + /* Buffer big enough to format a 32-bit UINT_MAX into. */ + char num[11]; int flags, id; int optgroup_flags = OPTGROUP_NONE; gcc::dump_manager *dumps = m_ctxt->get_dumps (); @@ -779,7 +781,7 @@ pass_manager::register_one_dump_file (opt_pass *pass) /* See below in next_pass_1. */ num[0] = '\0'; if (pass->static_pass_number != -1) - sprintf (num, "%d", ((int) pass->static_pass_number < 0 + sprintf (num, "%u", ((int) pass->static_pass_number < 0 ? 1 : pass->static_pass_number)); /* The name is both used to identify the pass for the purposes of plugins, diff --git a/gcc/print-tree.c b/gcc/print-tree.c index 7546f19e33e..e55b6bd6fb6 100644 --- a/gcc/print-tree.c +++ b/gcc/print-tree.c @@ -694,8 +694,10 @@ print_node (FILE *file, const char *prefix, tree node, int indent) i = 0; FOR_EACH_CALL_EXPR_ARG (arg, iter, node) { - char temp[10]; - sprintf (temp, "arg %d", i); + /* Buffer big enough to format a 32-bit UINT_MAX into, plus + the text. */ + char temp[15]; + sprintf (temp, "arg %u", i); print_node (file, temp, arg, indent + 4); i++; } @@ -706,7 +708,9 @@ print_node (FILE *file, const char *prefix, tree node, int indent) for (i = 0; i < len; i++) { - char temp[10]; + /* Buffer big enough to format a 32-bit UINT_MAX into, plus + the text. */ + char temp[15]; sprintf (temp, "arg %d", i); print_node (file, temp, TREE_OPERAND (node, i), indent + 4); @@ -824,7 +828,9 @@ print_node (FILE *file, const char *prefix, tree node, int indent) for (i = 0; i < len; i++) if (TREE_VEC_ELT (node, i)) { - char temp[10]; + /* Buffer big enough to format a 32-bit UINT_MAX into, plus + the text. */ + char temp[15]; sprintf (temp, "elt %d", i); print_node (file, temp, TREE_VEC_ELT (node, i), indent + 4); } -- 2.30.2