aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/iresolve.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/iresolve.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/iresolve.c')
-rw-r--r--gcc/fortran/iresolve.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/fortran/iresolve.c b/gcc/fortran/iresolve.c
index 2a4d2e6..a991c3a 100644
--- a/gcc/fortran/iresolve.c
+++ b/gcc/fortran/iresolve.c
@@ -61,9 +61,12 @@ gfc_get_string (const char *format, ...)
}
else
{
+ int ret;
va_start (ap, format);
- vsnprintf (temp_name, sizeof (temp_name), format, ap);
+ ret = vsnprintf (temp_name, sizeof (temp_name), format, ap);
va_end (ap);
+ if (ret < 1 || ret >= (int) sizeof (temp_name)) /* Reject truncation. */
+ gfc_internal_error ("identifier overflow: %d", ret);
temp_name[sizeof (temp_name) - 1] = 0;
str = temp_name;
}