diff options
Diffstat (limited to 'linker/linker.cpp')
-rwxr-xr-x | linker/linker.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/linker/linker.cpp b/linker/linker.cpp index 8e4c13c..2e145b5 100755 --- a/linker/linker.cpp +++ b/linker/linker.cpp @@ -811,11 +811,15 @@ void do_android_update_LD_LIBRARY_PATH(const char* ld_library_path) { } } -soinfo* do_dlopen(const char* name, int flags) { +soinfo* do_dlopen(const char* name, int flags, const android_dlextinfo* extinfo) { if ((flags & ~(RTLD_NOW|RTLD_LAZY|RTLD_LOCAL|RTLD_GLOBAL)) != 0) { DL_ERR("invalid flags to dlopen: %x", flags); return NULL; } + if (extinfo != NULL && ((extinfo->flags & ~(ANDROID_DLEXT_VALID_FLAG_BITS)) != 0)) { + DL_ERR("invalid extended flags to android_dlopen_ext: %x", extinfo->flags); + return NULL; + } set_soinfo_pool_protection(PROT_READ | PROT_WRITE); soinfo* si = find_library(name); if (si != NULL) { |