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/iresolve.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/iresolve.c')
-rw-r--r-- | gcc/fortran/iresolve.c | 5 |
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; } |