diff options
Diffstat (limited to 'cpukit/libdl')
-rw-r--r-- | cpukit/libdl/rtl-elf.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/cpukit/libdl/rtl-elf.c b/cpukit/libdl/rtl-elf.c index 3a432aa2ea..35201d5ded 100644 --- a/cpukit/libdl/rtl-elf.c +++ b/cpukit/libdl/rtl-elf.c @@ -639,6 +639,9 @@ rtems_rtl_elf_parse_sections (rtems_rtl_obj_t* obj, int fd, Elf_Ehdr* ehdr) { uint32_t flags; + /* + * Make sure section is at least 32bits to avoid 16-bit overflow errors. + */ off = obj->ooffset + ehdr->e_shoff + (((uint32_t) section) * ehdr->e_shentsize); if (!rtems_rtl_obj_cache_read_byval (sects, fd, off, &shdr, sizeof (shdr))) |