+2014-11-18 Mark Wielaard <mjw@redhat.com>
+
+ * version_xlate.h (elf_cvt_Verdef): Check for overflow.
+ (elf_cvt_Verneed): Likewise.
+
2014-11-17 Mark Wielaard <mjw@redhat.com>
* elf-knowledge.h (SECTION_STRIP_P): Check name is not NULL.
GElf_Verdaux *asrc;
/* Test for correct offset. */
- if (def_offset + sizeof (GElf_Verdef) > len)
+ if (def_offset > len || len - def_offset < sizeof (GElf_Verdef))
return;
/* Work the tree from the first record. */
GElf_Verdaux *adest;
/* Test for correct offset. */
- if (aux_offset + sizeof (GElf_Verdaux) > len)
+ if (aux_offset > len || len - aux_offset < sizeof (GElf_Verdaux))
return;
adest = (GElf_Verdaux *) ((char *) dest + aux_offset);
GElf_Vernaux *asrc;
/* Test for correct offset. */
- if (need_offset + sizeof (GElf_Verneed) > len)
+ if (need_offset > len || len - need_offset < sizeof (GElf_Verneed))
return;
/* Work the tree from the first record. */
GElf_Vernaux *adest;
/* Test for correct offset. */
- if (aux_offset + sizeof (GElf_Vernaux) > len)
+ if (aux_offset > len || len - aux_offset < sizeof (GElf_Vernaux))
return;
adest = (GElf_Vernaux *) ((char *) dest + aux_offset);