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
> 

Reply via email to