dbghelp: Properly bail out if get an error while reading ELF header.
authorEric Pouech <eric.pouech@orange.fr>
Sat, 20 Mar 2010 08:48:13 +0000 (09:48 +0100)
committerAlexandre Julliard <julliard@winehq.org>
Mon, 22 Mar 2010 10:29:14 +0000 (11:29 +0100)
dlls/dbghelp/elf_module.c

index 573a04065c3a7522c8e8b0e38ced62e63a30400c..e0fab9c958c849442a0024630b31b661aa34ff78 100644 (file)
@@ -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;
     }