summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--external/nss/UnpackedTarball_nss.mk1
-rw-r--r--external/nss/macos-dlopen.patch.025
2 files changed, 26 insertions, 0 deletions
diff --git a/external/nss/UnpackedTarball_nss.mk b/external/nss/UnpackedTarball_nss.mk
index 3079216b674e..0e174879a702 100644
--- a/external/nss/UnpackedTarball_nss.mk
+++ b/external/nss/UnpackedTarball_nss.mk
@@ -33,6 +33,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,nss,\
$(if $(filter ANDROID,$(OS)), \
external/nss/nss-android.patch.1) \
external/nss/nss.bzmozilla1238154.patch \
+ external/nss/macos-dlopen.patch.0 \
))
ifeq ($(COM_IS_CLANG),TRUE)
diff --git a/external/nss/macos-dlopen.patch.0 b/external/nss/macos-dlopen.patch.0
new file mode 100644
index 000000000000..8c484e4c6841
--- /dev/null
+++ b/external/nss/macos-dlopen.patch.0
@@ -0,0 +1,25 @@
+--- nspr/pr/src/linking/prlink.c
++++ nspr/pr/src/linking/prlink.c
+@@ -793,7 +793,7 @@
+ /* ensure the file exists if it contains a slash character i.e. path */
+ /* DARWIN's dlopen ignores the provided path and checks for the */
+ /* plain filename in DYLD_LIBRARY_PATH */
+- if (strchr(name, PR_DIRECTORY_SEPARATOR) == NULL ||
++ if (strchr(name, PR_DIRECTORY_SEPARATOR) == NULL || strncmp(name, "@loader_path/", 13) == 0 ||
+ PR_Access(name, PR_ACCESS_EXISTS) == PR_SUCCESS) {
+ h = dlopen(name, dl_flags);
+ }
+--- nss/lib/libpkix/pkix_pl_nss/module/pkix_pl_httpcertstore.c
++++ nss/lib/libpkix/pkix_pl_nss/module/pkix_pl_httpcertstore.c
+@@ -224,7 +224,11 @@
+ static PRStatus PR_CALLBACK pkix_getDecodeFunction(void)
+ {
+ pkix_decodeFunc.smimeLib =
++#if defined DARWIN
++ PR_LoadLibrary("@loader_path/" SHLIB_PREFIX"smime3."SHLIB_SUFFIX);
++#else
+ PR_LoadLibrary(SHLIB_PREFIX"smime3."SHLIB_SUFFIX);
++#endif
+ if (pkix_decodeFunc.smimeLib == NULL) {
+ return PR_FAILURE;
+ }