From 72066880c659be701cb1acddad610da012e7f428 Mon Sep 17 00:00:00 2001 From: Andrew Kaster Date: Sat, 11 Jun 2022 13:55:04 -0600 Subject: [PATCH] LibELF: Always use parent object basename for $ORIGIN processing Using the main executable basename produces the wrong $ORIGIN processing for libraries that are secondary dependencies of the main executable, or dependencies of an object loaded via dlopen. --- Userland/Libraries/LibELF/DynamicLinker.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Userland/Libraries/LibELF/DynamicLinker.cpp b/Userland/Libraries/LibELF/DynamicLinker.cpp index 0c2ff31fa1..756c69d8a1 100644 --- a/Userland/Libraries/LibELF/DynamicLinker.cpp +++ b/Userland/Libraries/LibELF/DynamicLinker.cpp @@ -120,7 +120,7 @@ static Optional resolve_library(String const& name, DynamicObject const& search_paths.append("/usr/local/lib"sv); for (auto const& search_path : search_paths) { - LexicalPath library_path(search_path.replace("$ORIGIN"sv, LexicalPath::dirname(s_main_program_name))); + LexicalPath library_path(search_path.replace("$ORIGIN"sv, LexicalPath::dirname(parent_object.filename()))); String library_name = library_path.append(name).string(); if (access(library_name.characters(), F_OK) == 0)