> On 22/09/2021 03:31 Luís Ferreira <cont...@lsferreira.net> wrote: > > > This patch prevents dereferencing a null reference on a crafted > malformed magled name, often causing SIGSEGV to be raised. >
OK, seems reasonable to me. > Signed-off-by: Luís Ferreira <cont...@lsferreira.net> > --- > libiberty/d-demangle.c | 2 +- > libiberty/testsuite/d-demangle-expected | 5 ++++- > 2 files changed, 5 insertions(+), 2 deletions(-) > > diff --git a/libiberty/d-demangle.c b/libiberty/d-demangle.c > index a2152cc65518..469398261994 100644 > --- a/libiberty/d-demangle.c > +++ b/libiberty/d-demangle.c > @@ -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); > diff --git a/libiberty/testsuite/d-demangle-expected > b/libiberty/testsuite/d-demangle-expected > index c35185c3e1e3..799f4724b72e 100644 > --- a/libiberty/testsuite/d-demangle-expected > +++ b/libiberty/testsuite/d-demangle-expected > @@ -991,11 +991,14 @@ _D88 > _D5__T1aZv > _D5__T1aZv > # > ---format=dlang > _D00 > _D00 > # > --format=dlang > +_D01_D > +_D01_D > +# > +--format=dlang > _D9223372036854775817 > _D9223372036854775817 > #