From 3d519698e6f8627e440cff40a5005b4d62d77137 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 31 Jul 2018 10:42:39 +0100 Subject: [PATCH] Ensure we handle filename == NULL in dlopen correctly. Closes #1058 --- renderdoc/os/posix/android/android_hook.cpp | 4 ++-- renderdoc/os/posix/linux/linux_hook.cpp | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/renderdoc/os/posix/android/android_hook.cpp b/renderdoc/os/posix/android/android_hook.cpp index d5de0106e..a8754efec 100644 --- a/renderdoc/os/posix/android/android_hook.cpp +++ b/renderdoc/os/posix/android/android_hook.cpp @@ -214,7 +214,7 @@ HookingInfo &GetHookInfo() void *intercept_dlopen(const char *filename, int flag) { - if(GetHookInfo().IsLibHook(filename)) + if(filename && GetHookInfo().IsLibHook(std::string(filename))) return dlopen(RENDERDOC_ANDROID_LIBRARY, flag); return NULL; @@ -420,7 +420,7 @@ uint64_t suppressTLS = 0; void process_dlopen(const char *filename, int flag) { - if(!GetHookInfo().IsHooked(filename)) + if(filename && !GetHookInfo().IsHooked(std::string(filename))) { HOOK_DEBUG_PRINT("iterating after %s", filename); dl_iterate_phdr(dl_iterate_callback, NULL); diff --git a/renderdoc/os/posix/linux/linux_hook.cpp b/renderdoc/os/posix/linux/linux_hook.cpp index 71571101e..f7345c09f 100644 --- a/renderdoc/os/posix/linux/linux_hook.cpp +++ b/renderdoc/os/posix/linux/linux_hook.cpp @@ -85,6 +85,9 @@ void plthook_lib(void *handle) void *intercept_dlopen(const char *filename, int flag, void *ret) { + if(filename == NULL) + return ret; + if(flag & RTLD_DEEPBIND) plthook_lib(ret);