diff options
author | Andrew Benson <abenson@carnegiescience.edu> | 2020-01-30 17:47:00 +0000 |
---|---|---|
committer | Andrew Benson <abenson@carnegiescience.edu> | 2020-01-30 17:47:00 +0000 |
commit | 004ac7b780308dc899e565b887c7def0a6e100f2 (patch) | |
tree | 0f596d4c0602487ec10d0079723d42db43904b66 /gcc/fortran/expr.c | |
parent | 59e6d62be2c980adfc375702792afb141a1f1a1b (diff) | |
download | gcc-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.c | 4 |
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) { |