Eric Pouech : dbghelp: Properly bail out if get an error while reading ELF header.

Alexandre Julliard julliard at winehq.org
Mon Mar 22 11:12:01 CDT 2010


Module: wine
Branch: master
Commit: 4c3361e39e636eec51c1651460d2b72c4a139007
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4c3361e39e636eec51c1651460d2b72c4a139007

Author: Eric Pouech <eric.pouech at 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;
     }
 




More information about the wine-cvs mailing list