summaryrefslogtreecommitdiff
path: root/recipes/mozilla/nss-3.12/85_security_load.dpatch
diff options
context:
space:
mode:
authorKoen Kooi <koen@openembedded.org>2010-04-16 10:17:50 +0200
committerKoen Kooi <koen@openembedded.org>2010-04-16 10:17:50 +0200
commitbf18c876b0b6dd542f80dfccd575d9fa2c3a4fdf (patch)
tree279c8491ed91af425aee0a675591a351948f3975 /recipes/mozilla/nss-3.12/85_security_load.dpatch
parent199effd4c7b1b62bc133a577e42d7043ee7202e7 (diff)
nss 3.12: import from jalimo, convert to new style staging, convert to new style checksums, fix QA errors, fix packaging
Diffstat (limited to 'recipes/mozilla/nss-3.12/85_security_load.dpatch')
-rw-r--r--recipes/mozilla/nss-3.12/85_security_load.dpatch57
1 files changed, 57 insertions, 0 deletions
diff --git a/recipes/mozilla/nss-3.12/85_security_load.dpatch b/recipes/mozilla/nss-3.12/85_security_load.dpatch
new file mode 100644
index 0000000000..8581f9b28f
--- /dev/null
+++ b/recipes/mozilla/nss-3.12/85_security_load.dpatch
@@ -0,0 +1,57 @@
+Index: mozilla/security/nss/lib/freebl/genload.c
+===================================================================
+--- mozilla.orig/security/nss/lib/freebl/genload.c 2008-07-23 20:27:21.000000000 +0200
++++ mozilla/security/nss/lib/freebl/genload.c 2008-07-23 20:28:57.000000000 +0200
+@@ -113,9 +113,14 @@
+
+ /* Remove the trailing filename from referencePath and add the new one */
+ c = strrchr(referencePath, PR_GetDirectorySeparator());
++ if (!c) { /* referencePath doesn't contain a / means that dladdr gave us argv[0]
++ * and program was called from $PATH. Hack to get libs from /usr/lib */
++ referencePath = "/usr/lib/";
++ c = &referencePath[8]; /* last / */
++ }
+ if (c) {
+ size_t referencePathSize = 1 + c - referencePath;
+- fullName = (char*) PORT_Alloc(strlen(name) + referencePathSize + 1);
++ fullName = (char*) PORT_Alloc(strlen(name) + referencePathSize + 5);
+ if (fullName) {
+ memcpy(fullName, referencePath, referencePathSize);
+ strcpy(fullName + referencePathSize, name);
+@@ -125,7 +130,17 @@
+ #endif
+ libSpec.type = PR_LibSpec_Pathname;
+ libSpec.value.pathname = fullName;
++ if ((referencePathSize >= 4) &&
++ (strncmp(fullName + referencePathSize - 4, "bin", 3) == 0)) {
++ memcpy(fullName + referencePathSize -4, "lib", 3);
++ }
++ strcpy(fullName + referencePathSize, "nss/");
++ strcpy(fullName + referencePathSize + 4, name);
+ dlh = PR_LoadLibraryWithFlags(libSpec, PR_LD_NOW | PR_LD_LOCAL);
++ if (! dlh) {
++ strcpy(fullName + referencePathSize, name);
++ dlh = PR_LoadLibraryWithFlags(libSpec, PR_LD_NOW | PR_LD_LOCAL);
++ }
+ PORT_Free(fullName);
+ }
+ }
+Index: mozilla/security/nss/lib/pk11wrap/pk11load.c
+===================================================================
+--- mozilla.orig/security/nss/lib/pk11wrap/pk11load.c 2008-07-23 20:27:22.000000000 +0200
++++ mozilla/security/nss/lib/pk11wrap/pk11load.c 2008-07-23 20:28:57.000000000 +0200
+@@ -331,6 +331,14 @@
+ #endif
+
+ if (library == NULL) {
++ full_name = rindex(mod->dllName, PR_GetDirectorySeparator());
++ if (full_name)
++ full_name++;
++ else
++ full_name = mod->dllName;
++ library = loader_LoadLibrary(full_name);
++ }
++ if (library == NULL) {
+ return SECFailure;
+ }
+