On Fri, Jan 17, 2014 at 11:21:13AM -0500, Eric Radman wrote: > 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
if you had it working, that's really nice! But we'd have to sprinkle a bunch of #ifdefs around to make it commitable upstream :) Landry > $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 >