]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libiberty: prevent null dereferencing on dlang_type
authorLuís Ferreira <contact@lsferreira.net>
Thu, 23 Sep 2021 15:54:00 +0000 (11:54 -0400)
committerJeff Law <jeffreyalaw@gmail.com>
Thu, 23 Sep 2021 15:54:00 +0000 (11:54 -0400)
libiberty/
* d-demangle.c (dlang_Type): Validate MANGLED is nonnull.

* testsuite/d-demangle-expected: New test.

libiberty/d-demangle.c
libiberty/testsuite/d-demangle-expected

index 7ded3e2a256355e0daf912a448d5202a89e95063..3adf7b562d1b743bd6919f207e276631783f5450 100644 (file)
@@ -875,7 +875,7 @@ dlang_type (string *decl, const char *mangled, struct dlang_info *info)
       szmods = string_length (&mods);
 
       /* Back referenced function type.  */
-      if (*mangled == 'Q')
+      if (mangled && *mangled == 'Q')
        mangled = dlang_type_backref (decl, mangled, info, 1);
       else
        mangled = dlang_function_type (decl, mangled, info);
index c35185c3e1e3a2345a368e5cd4786d69583c56ae..799f4724b72e32b9135b5840bf2a802e25fcd4d5 100644 (file)
@@ -991,11 +991,14 @@ _D88
 _D5__T1aZv
 _D5__T1aZv
 #
---format=dlang
 _D00
 _D00
 #
 --format=dlang
+_D01_D
+_D01_D
+#
+--format=dlang
 _D9223372036854775817
 _D9223372036854775817
 #