From 34280c3558f99c088e86e83972cef8ff0ab7e570 Mon Sep 17 00:00:00 2001 From: robert Date: Mon, 24 Apr 2023 08:59:09 +0000 Subject: [PATCH] do a cache lookup as well in case a full pathname is passed to dlopen --- libexec/ld.so/library_subr.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/libexec/ld.so/library_subr.c b/libexec/ld.so/library_subr.c index c7826c336fe..1eefbcea87d 100644 --- a/libexec/ld.so/library_subr.c +++ b/libexec/ld.so/library_subr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: library_subr.c,v 1.53 2022/11/07 10:35:26 deraadt Exp $ */ +/* $OpenBSD: library_subr.c,v 1.54 2023/04/24 08:59:09 robert Exp $ */ /* * Copyright (c) 2002 Dale Rahn @@ -344,6 +344,13 @@ _dl_load_shlib(const char *libname, elf_object_t *parent, int type, int flags, _dl_build_sod(lname, &sod); req_sod = sod; + object = _dl_find_loaded_shlib(lname, req_sod, flags); + if (object) { + _dl_free((char *)sod.sod_name); + _dl_free(lpath); + return (object); + } + paths[0] = lpath; paths[1] = NULL; fullpathagain: -- 2.20.1