aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/expr.c
diff options
context:
space:
mode:
authorAndrew Benson <abenson@carnegiescience.edu>2020-01-30 17:47:00 +0000
committerAndrew Benson <abenson@carnegiescience.edu>2020-01-30 17:47:00 +0000
commit004ac7b780308dc899e565b887c7def0a6e100f2 (patch)
tree0f596d4c0602487ec10d0079723d42db43904b66 /gcc/fortran/expr.c
parent59e6d62be2c980adfc375702792afb141a1f1a1b (diff)
downloadgcc-004ac7b780308dc899e565b887c7def0a6e100f2.zip
gcc-004ac7b780308dc899e565b887c7def0a6e100f2.tar.gz
gcc-004ac7b780308dc899e565b887c7def0a6e100f2.tar.bz2
Remove check for maximum symbol name length.
PR fortran/87103 * expr.c (gfc_check_conformance): Check vsnprintf for truncation. * iresolve.c (gfc_get_string): Likewise. * symbol.c (gfc_new_symbol): Remove check for maximum symbol name length. Remove redundant 0 setting of new calloc()ed gfc_symbol.
Diffstat (limited to 'gcc/fortran/expr.c')
-rw-r--r--gcc/fortran/expr.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c
index f1d21e6..a9698c3 100644
--- a/gcc/fortran/expr.c
+++ b/gcc/fortran/expr.c
@@ -3495,8 +3495,10 @@ gfc_check_conformance (gfc_expr *op1, gfc_expr *op2, const char *optype_msgid, .
return true;
va_start (argp, optype_msgid);
- vsnprintf (buffer, 240, optype_msgid, argp);
+ d = vsnprintf (buffer, sizeof (buffer), optype_msgid, argp);
va_end (argp);
+ if (d < 1 || d >= (int) sizeof (buffer)) /* Reject truncation. */
+ gfc_internal_error ("optype_msgid overflow: %d", d);
if (op1->rank != op2->rank)
{