View | Details | Raw Unified | Return to bug 22894
Collapse All | Expand All

(-)a/bfd/dwarf1.c (-2 / +15 lines)
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:

Return to bug 22894