[PATCH] Don't crash if dwarf_decode_macro_bytes's 'body' is NULL

Sergio Durigan Junior sergiodj@redhat.com
Tue May 14 23:36:00 GMT 2019


On Tuesday, May 14 2019, Tom Tromey wrote:

>>>>>> "Sergio" == Sergio Durigan Junior <sergiodj@redhat.com> writes:
>
> Sergio> OK for master?
>
> Sergio> gdb/ChangeLog:
> Sergio> 2019-05-14  Sergio Durigan Junior  <sergiodj@redhat.com>
>
> Sergio> 	Ref.: https://bugzilla.redhat.com/show_bug.cgi?id=1708192
> Sergio> 	* dwarf2read.c (dwarf_decode_macro_bytes): Check whether 'body' is
> Sergio> 	NULL, and complain if that's the case.
>
> Sergio> +		    complaint (_("debug info gives %s invalid macro definition "
> Sergio> +				 "without body (corrupted?) at line %d"),
> Sergio> +			       at_commandline ? _("command-line")
> Sergio> +			       : _("in-file"),
> Sergio> +			       line == 0 ? _("zero") : _("non-zero"), line);
>
> This seems weird since it doesn't use current_file, and if I'm reading
> correctly, there are 3 arguments but only 2 % substitutions.  The
> compiler should catch the latter, so that's doubly strange.  I think for
> a complaint it's fine to emit a line==0 or whatever, mostly it's for
> helping to track down the incorrect spot.

Sorry, you're right, I left one extra argument there.  I was testing the
patch on a VM, where I had everything correct, but then I made some
extra adjustments and forgot to remove the extra "line == 0 ? _("zero")
: _("non-zero")".

As for the filename, I was following what other complaints were doing.
But I also agree that having a filename would be best.  What do you
think of:

    complaint (_("debug info gives %s invalid macro definition "
		 "without body (corrupted?) at line %d"
		 "on file %s"),
	       at_commandline ? _("command-line")
	       : _("in-file"),
	       line, current_file->filename);

?

Thanks,

-- 
Sergio
GPG key ID: 237A 54B1 0287 28BF 00EF  31F4 D0EB 7628 65FC 5E36
Please send encrypted e-mail if possible
http://sergiodj.net/



More information about the Gdb-patches mailing list