From a25be1aaa92a6d2e7f4cc3fdfbb92e5a10b63035 Mon Sep 17 00:00:00 2001 From: Greg Beard Date: Sat, 25 Mar 2023 08:31:36 +0000 Subject: [PATCH] dso: Check for NULL handle in apr_dso_sym Upstream-Status: Backport [https://github.com/apache/apr/pull/40/commits/0efce00093b1ba405d91c7f0eab9755c8527eead] Signed-off-by: Khem Raj --- dso/unix/dso.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/dso/unix/dso.c b/dso/unix/dso.c index fdd56f1..583d5de 100644 --- a/dso/unix/dso.c +++ b/dso/unix/dso.c @@ -173,6 +173,18 @@ APR_DECLARE(apr_status_t) apr_dso_sym(apr_dso_handle_sym_t *ressym, apr_dso_handle_t *handle, const char *symname) { + /* This is necessary for `testdso.c`. For some reason, musl + * builds fail the `test_unload_library` test if the below + * check isn't in place. `test_unload_library` unloads the + * library and then immediately calls this function. Maybe + * musl's `dlsym()` assumes the handle is never NULL and + * some UB is being invoked here... + */ + if (handle->handle == NULL) { + handle->errormsg = "library not loaded"; + return APR_ESYMNOTFOUND; + } + #if defined(DSO_USE_SHL) void *symaddr = NULL; int status; -- 2.42.0