Lines 213-218
parse_die (bfd * abfd,
Link Here
|
213 |
/* Then the attributes. */ |
213 |
/* Then the attributes. */ |
214 |
while (xptr + 2 <= aDiePtrEnd) |
214 |
while (xptr + 2 <= aDiePtrEnd) |
215 |
{ |
215 |
{ |
|
|
216 |
unsigned int block_len; |
216 |
unsigned short attr; |
217 |
unsigned short attr; |
217 |
|
218 |
|
218 |
/* Parse the attribute based on its form. This section |
219 |
/* Parse the attribute based on its form. This section |
Lines 255-266
parse_die (bfd * abfd,
Link Here
|
255 |
break; |
256 |
break; |
256 |
case FORM_BLOCK2: |
257 |
case FORM_BLOCK2: |
257 |
if (xptr + 2 <= aDiePtrEnd) |
258 |
if (xptr + 2 <= aDiePtrEnd) |
258 |
xptr += bfd_get_16 (abfd, xptr); |
259 |
{ |
|
|
260 |
block_len = bfd_get_16 (abfd, xptr); |
261 |
if (xptr + block_len > aDiePtrEnd |
262 |
|| xptr + block_len < xptr) |
263 |
return FALSE; |
264 |
xptr += block_len; |
265 |
} |
259 |
xptr += 2; |
266 |
xptr += 2; |
260 |
break; |
267 |
break; |
261 |
case FORM_BLOCK4: |
268 |
case FORM_BLOCK4: |
262 |
if (xptr + 4 <= aDiePtrEnd) |
269 |
if (xptr + 4 <= aDiePtrEnd) |
263 |
xptr += bfd_get_32 (abfd, xptr); |
270 |
{ |
|
|
271 |
block_len = bfd_get_32 (abfd, xptr); |
272 |
if (xptr + block_len > aDiePtrEnd |
273 |
|| xptr + block_len < xptr) |
274 |
return FALSE; |
275 |
xptr += block_len; |
276 |
} |
264 |
xptr += 4; |
277 |
xptr += 4; |
265 |
break; |
278 |
break; |
266 |
case FORM_STRING: |
279 |
case FORM_STRING: |