Fix mistake in recent code to check for an unterminated leb128 number.

* dwarf.c (read_leb128): Fix test for shift becoming too large.
This commit is contained in:
Nick Clifton 2015-02-13 11:13:20 +00:00
parent 9f04ac5f92
commit f641dd969f
2 changed files with 7 additions and 2 deletions

View File

@ -668,8 +668,13 @@ do_define (unsigned int i, struct coff_scope *b)
if (!is->init)
{
long high = s->where->offset + s->type->size;
is->low = s->where->offset;
is->high = s->where->offset + s->type->size;
is->high = high;
/* PR 17512: file: 37e7a80d. */
if (is->high != high)
fatal (_("Out of range type size: %u"), s->type->size);
is->init = 1;
is->parent = s->where->section;
}

View File

@ -284,7 +284,7 @@ read_leb128 (unsigned char *data,
/* PR 17512: file: 0ca183b8.
FIXME: Should we signal this error somehow ? */
if (shift >= sizeof (result))
if (shift >= sizeof (result) * 8)
break;
}