Resubmitting a patch for firefox that includes all of the symbols
required to load gssapi. From moz.log:

784166112[83e29180]:   service = inout.deshaw.com
784166112[83e29180]:   using negotiate-gss
784166112[83e29180]: entering nsAuthGSSAPI::nsAuthGSSAPI()
784166112[83e29180]: Attempting to load gss functions
784166112[83e29180]: entering nsAuthGSSAPI::Init()
784166112[83e29180]: nsHttpNegotiateAuth::GenerateCredentials() 
[challenge=Negotiate]
784166112[83e29180]: entering nsAuthGSSAPI::GetNextToken()
784166112[83e29180]:   leaving nsAuthGSSAPI::GetNextToken [rv=0]
784166112[83e29180]:   Sending a token of length 1730

Notes on the patch:

- Remove `&& !lib` from the module load loop because it would stop
  loading modules the first time dlopen succeeded

- Had to replace PR_LoadLibrary with PR_LoadLibraryWithFlags so I
  could use the PR_LD_GLOBAL option


$OpenBSD$
--- extensions/auth/nsAuthGSSAPI.cpp.orig       Fri Oct 25 18:27:17 2013
+++ extensions/auth/nsAuthGSSAPI.cpp    Thu Nov 21 09:14:15 2013
@@ -120,22 +120,32 @@ gssInit()
             PR_FreeLibraryName(libName);
         }
 #else
-        
+
         const char *const libNames[] = {
-            "gss",
-            "gssapi_krb5",
+            "asn1",
+            "crypto",
+            "roken",
+            "heimbase",
+            "com_err",
+            "krb5",
             "gssapi"
         };
-        
+
         const char *const verLibNames[] = {
-            "libgssapi_krb5.so.2", /* MIT - FC, Suse10, Debian */
-            "libgssapi.so.4",      /* Heimdal - Suse10, MDK */
-            "libgssapi.so.1",      /* Heimdal - Suse9, CITI - FC, MDK, Suse10*/
-            "libgssapi.so"         /* OpenBSD */
+            "libasn1.so",
+            "libcrypto.so",
+            "libroken.so",
+            "libheimbase.so",
+            "libcom_err.so",
+            "libkrb5.so",
+            "libgssapi.so"
         };
 
-        for (size_t i = 0; i < ArrayLength(verLibNames) && !lib; ++i) {
-            lib = PR_LoadLibrary(verLibNames[i]);
+        PRLibSpec libSpec;
+        for (size_t i = 0; i < ArrayLength(verLibNames); ++i) {
+            libSpec.type = PR_LibSpec_Pathname;
+            libSpec.value.pathname = verLibNames[i];
+            lib = PR_LoadLibraryWithFlags(libSpec, PR_LD_GLOBAL);
  
             /* The CITI libgssapi library calls exit() during
              * initialization if it's not correctly configured. Try to

Reply via email to