[PATCH] Check for null result from gdb_demangle

Andrew Burgess andrew.burgess@embecosm.com
Thu Feb 13 10:53:00 GMT 2020


* Ali Tamur via gdb-patches <gdb-patches@sourceware.org> [2020-02-12 22:31:40 -0800]:

> I am sending this patch on behalf of kmoy@google.com, who discovered the bug
> and wrote the fix.
> 
> gdb_demangle can return null for strings that don't properly demangle. The null
> check was mistakenly removed in commit 43816ebc335. Without this check, GDB
> aborts when loading symbols from some binaries.
> 
> gdb/ChangeLog:
> 
> 	* dwarf2/read.c (dwarf2_name): Add null check.

If you are able to find an example of a symbol that triggers the crash
then it should be pretty easy to add a test, see for example the last
few lines of gdb.cp/demangle.exp for C++ demangling tests.  Having a
test would help something like this happening again.

Thanks,
Andrew




> ---
>  gdb/dwarf2/read.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
> index 7edbd9d7df..2f37c8a496 100644
> --- a/gdb/dwarf2/read.c
> +++ b/gdb/dwarf2/read.c
> @@ -21770,6 +21770,8 @@ dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
>  	    {
>  	      gdb::unique_xmalloc_ptr<char> demangled
>  		(gdb_demangle (DW_STRING (attr), DMGL_TYPES));
> +	      if (demangled == nullptr)
> +		return nullptr;
>  
>  	      const char *base;
>  
> -- 
> 2.25.0.265.gbab2e86ba0-goog
> 



More information about the Gdb-patches mailing list