Prevent a buffer overrun when parsing corrupt STABS debug information.

PR 22957
	* stabs.c (pop_binincl): Fail if the file index is off the end of
	the stack.
This commit is contained in:
Nick Clifton 2018-03-13 17:03:04 +00:00
parent b4a3689a68
commit e45ad1239d
2 changed files with 10 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2018-03-13 Nick Clifton <nickc@redhat.com>
PR 22957
* stabs.c (pop_binincl): Fail if the file index is off the end of
the stack.
2018-03-13 Nick Clifton <nickc@redhat.com>
PR 22955
@ -19,6 +25,7 @@
(parse_stab_members): Likewise.
(parse_stab_tilde_field): Likewise.
(parse_stab_array_type): Likewise.
* parse_stab: Compute the end of the string and then pass it on to
individual parser functions.

View File

@ -449,7 +449,6 @@ parse_stab (void *dhandle, void *handle, int type, int desc, bfd_vma value,
info->file_types = ((struct stab_types **)
xmalloc (sizeof *info->file_types));
info->file_types[0] = NULL;
info->so_string = NULL;
/* Now process whatever type we just got. */
@ -3326,6 +3325,9 @@ pop_bincl (struct stab_handle *info)
return info->main_filename;
info->bincl_stack = o->next_stack;
if (o->file >= info->files)
return info->main_filename;
o->file_types = info->file_types[o->file];
if (info->bincl_stack == NULL)