gitypelib.c: on macOS, treat @-prefixed shlib paths as absolute

On macOS, @-prefixed shlib paths (@rpath, @executable_path, and
@loader_path) need to be treated as absolute. Trying to combine them
with a configured library path produces a mangled path that is
unresolvable and may cause unintended side effects (such as loading
the library from a fall-back location on macOS 12.0.1).
This commit is contained in:
Rok Mandeljc 2021-11-27 20:05:32 +01:00
parent 4027d2e12a
commit c493763ff2

View File

@ -2262,7 +2262,17 @@ load_one_shared_library (const char *shlib)
GSList *p;
GModule *m;
#ifdef __APPLE__
/* On macOS, @-prefixed shlib paths (@rpath, @executable_path, @loader_path)
need to be treated as absolute; trying to combine them with a
configured library path produces a mangled path that is unresolvable
and may cause unintended side effects (such as loading the library
from a fall-back location on macOS 12.0.1).
*/
if (!g_path_is_absolute (shlib) && !g_str_has_prefix (shlib, "@"))
#else
if (!g_path_is_absolute (shlib))
#endif
{
/* First try in configured library paths */
for (p = library_paths; p; p = p->next)