Module: wine Branch: master Commit: 4c3361e39e636eec51c1651460d2b72c4a139007 URL: http://source.winehq.org/git/wine.git/?a=commit;h=4c3361e39e636eec51c1651460...
Author: Eric Pouech eric.pouech@orange.fr Date: Sat Mar 20 09:48:13 2010 +0100
dbghelp: Properly bail out if get an error while reading ELF header.
---
dlls/dbghelp/elf_module.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/dlls/dbghelp/elf_module.c b/dlls/dbghelp/elf_module.c index 573a040..e0fab9c 100644 --- a/dlls/dbghelp/elf_module.c +++ b/dlls/dbghelp/elf_module.c @@ -272,7 +272,12 @@ static BOOL elf_map_file(const WCHAR* filenameW, struct image_file_map* fmap) lseek(fmap->u.elf.fd, fmap->u.elf.elfhdr.e_shoff, SEEK_SET); for (i = 0; i < fmap->u.elf.elfhdr.e_shnum; i++) { - read(fmap->u.elf.fd, &fmap->u.elf.sect[i].shdr, sizeof(fmap->u.elf.sect[i].shdr)); + if (read(fmap->u.elf.fd, &fmap->u.elf.sect[i].shdr, sizeof(fmap->u.elf.sect[i].shdr)) != sizeof(fmap->u.elf.sect[i].shdr)) + { + HeapFree(GetProcessHeap, 0, fmap->u.elf.sect); + fmap->u.elf.sect = NULL; + goto done; + } fmap->u.elf.sect[i].mapped = IMAGE_NO_MAP; }