Jacek Caban : dbghelp: Use elf_check_debug_link in elf_locate_build_id_target.
Alexandre Julliard
julliard at winehq.org
Tue Mar 17 17:21:11 CDT 2020
Module: wine
Branch: master
Commit: 171c6fadab8eb444968c1b3a4b364e2e978a639a
URL: https://source.winehq.org/git/wine.git/?a=commit;h=171c6fadab8eb444968c1b3a4b364e2e978a639a
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Mar 17 17:21:06 2020 +0100
dbghelp: Use elf_check_debug_link in elf_locate_build_id_target.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/dbghelp/elf_module.c | 24 +++++++++++++-----------
1 file changed, 13 insertions(+), 11 deletions(-)
diff --git a/dlls/dbghelp/elf_module.c b/dlls/dbghelp/elf_module.c
index 1ad37a24ed..c89292a644 100644
--- a/dlls/dbghelp/elf_module.c
+++ b/dlls/dbghelp/elf_module.c
@@ -985,20 +985,25 @@ static BOOL elf_check_debug_link(const WCHAR* file, struct image_file_map* fmap,
{
HANDLE handle;
WCHAR *path;
- DWORD crc;
- BOOL ret = FALSE;
+ BOOL ret;
path = get_dos_file_name(file);
handle = CreateFileW(path, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
heap_free(path);
if (handle == INVALID_HANDLE_VALUE) return FALSE;
- crc = calc_crc32(handle);
- if (crc != link_crc)
- WARN("Bad CRC for file %s (got %08x while expecting %08x)\n", debugstr_w(file), crc, link_crc);
- else
- ret = elf_map_handle(handle, fmap);
+ if (link_crc)
+ {
+ DWORD crc = calc_crc32(handle);
+ if (crc != link_crc)
+ {
+ WARN("Bad CRC for file %s (got %08x while expecting %08x)\n", debugstr_w(file), crc, link_crc);
+ CloseHandle(handle);
+ return FALSE;
+ }
+ }
+ ret = elf_map_handle(handle, fmap);
CloseHandle(handle);
return ret;
}
@@ -1094,7 +1099,6 @@ static BOOL elf_locate_build_id_target(struct image_file_map* fmap, const BYTE*
WCHAR* p;
WCHAR* z;
const BYTE* idend = id + idlen;
- struct elf_map_file_data emfd;
fmap_link = HeapAlloc(GetProcessHeap(), 0, sizeof(*fmap_link));
if (!fmap_link) return FALSE;
@@ -1125,9 +1129,7 @@ static BOOL elf_locate_build_id_target(struct image_file_map* fmap, const BYTE*
memcpy(z, dotDebug0W, sizeof(dotDebug0W));
TRACE("checking %s\n", wine_dbgstr_w(p));
- emfd.kind = from_file;
- emfd.u.file.filename = p;
- if (elf_map_file(&emfd, fmap_link))
+ if (elf_check_debug_link(p, fmap_link, 0))
{
struct image_section_map buildid_sect;
if (image_find_section(fmap_link, ".note.gnu.build-id", &buildid_sect))
More information about the wine-cvs
mailing list