[gcc r9-9305] Fortran: Fix 'name' bound size [PR99688]

Tobias Burnus burnus@gcc.gnu.org
Wed Mar 24 08:15:32 GMT 2021


https://gcc.gnu.org/g:cdce7732ed2c91f6cc73f83bf05ab971b9d0a62e

commit r9-9305-gcdce7732ed2c91f6cc73f83bf05ab971b9d0a62e
Author: Tobias Burnus <tobias@codesourcery.com>
Date:   Mon Mar 22 09:49:48 2021 +0100

    Fortran: Fix 'name' bound size [PR99688]
    
    gcc/fortran/ChangeLog:
    
            PR fortran/99688
            * match.c (select_type_set_tmp, gfc_match_select_type) Fix 'name'
            buffersize to avoid out of bounds.
            * resolve.c (resolve_select_type): Likewise.
    
    (cherry picked from commit 0e792ee11aa6ebb6f61e9ed33eb06e260f0ec703)

Diff:
---
 gcc/fortran/match.c   | 4 ++--
 gcc/fortran/resolve.c | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c
index c87755a02e6..f61eac0b955 100644
--- a/gcc/fortran/match.c
+++ b/gcc/fortran/match.c
@@ -6168,7 +6168,7 @@ select_intrinsic_set_tmp (gfc_typespec *ts)
 static void
 select_type_set_tmp (gfc_typespec *ts)
 {
-  char name[GFC_MAX_SYMBOL_LEN];
+  char name[GFC_MAX_SYMBOL_LEN + 12 + 1];
   gfc_symtree *tmp = NULL;
   gfc_symbol *selector = select_type_stack->selector;
 
@@ -6242,7 +6242,7 @@ gfc_match_select_type (void)
 {
   gfc_expr *expr1, *expr2 = NULL;
   match m;
-  char name[GFC_MAX_SYMBOL_LEN];
+  char name[GFC_MAX_SYMBOL_LEN + 1];
   bool class_array;
   gfc_symbol *sym;
   gfc_namespace *ns = gfc_current_ns;
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 84feebc07f7..1c72e0db9ea 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -9040,7 +9040,7 @@ resolve_select_type (gfc_code *code, gfc_namespace *old_ns)
   gfc_code *class_is = NULL, *default_case = NULL;
   gfc_case *c;
   gfc_symtree *st;
-  char name[GFC_MAX_SYMBOL_LEN];
+  char name[GFC_MAX_SYMBOL_LEN + 12 + 1];
   gfc_namespace *ns;
   int error = 0;
   int rank = 0;


More information about the Gcc-cvs mailing list