mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-08 19:04:45 +00:00
Mac bustage fix. Bug 299305, Mac GSSAPI fixes following bug 295109. a=#developers
This commit is contained in:
parent
ed977a6937
commit
f0daba2e6d
@ -499,7 +499,7 @@ MOZ_PSM=@MOZ_PSM@
|
||||
|
||||
# Gssapi (krb5) libraries and headers for the Negotiate auth method
|
||||
GSSAPI_INCLUDES = @GSSAPI_INCLUDES@
|
||||
GSSAPI_LIBS = @GSSAPI_LIBS@
|
||||
USE_GSSAPI = @USE_GSSAPI@
|
||||
|
||||
# for Qt build
|
||||
MOC=@MOC@
|
||||
|
17
configure.in
17
configure.in
@ -4646,14 +4646,13 @@ if test -n "$USE_GSSAPI" && test `echo "$MOZ_EXTENSIONS" | grep -c negotiateauth
|
||||
dnl Try to set GSSAPI_INCLUDES ...
|
||||
dnl
|
||||
AC_CHECK_HEADERS(gssapi.h,
|
||||
[GSSAPI_INCLUDES="$_GSSAPI_INC"])
|
||||
if test -z "$GSSAPI_INCLUDES" ; then
|
||||
[GSSAPI_INCLUDES="$_GSSAPI_INC" _GSSAPI_FOUND=1])
|
||||
if test -z "$_GSSAPI_FOUND" ; then
|
||||
AC_CHECK_HEADERS(gssapi/gssapi.h,
|
||||
[GSSAPI_INCLUDES="$_GSSAPI_INC"])
|
||||
[GSSAPI_INCLUDES="$_GSSAPI_INC" _GSSAPI_FOUND=1])
|
||||
fi
|
||||
CPPFLAGS="$_SAVE_CPPFLAGS $GSSAPI_INCLUDES"
|
||||
|
||||
if test -z "$GSSAPI_INCLUDES" ; then
|
||||
if test -z "$_GSSAPI_FOUND" ; then
|
||||
if test -n "$GSSAPI_DIR" ; then
|
||||
AC_PATH_PROG(KRB5CONFIG, krb5-config, :, [$GSSAPI_DIR/bin:$PATH:/usr/bin])
|
||||
else
|
||||
@ -4661,8 +4660,7 @@ if test -n "$USE_GSSAPI" && test `echo "$MOZ_EXTENSIONS" | grep -c negotiateauth
|
||||
fi
|
||||
if test -n "$KRB5CONFIG" -a -x "$KRB5CONFIG" ; then
|
||||
GSSAPI_INCLUDES=`$KRB5CONFIG --cflags gssapi 2>/dev/null`
|
||||
|
||||
CPPFLAGS="$_SAVE_CPPFLAGS $GSSAPI_INCLUDES"
|
||||
_GSSAPI_FOUND=1
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -4670,9 +4668,10 @@ if test -n "$USE_GSSAPI" && test `echo "$MOZ_EXTENSIONS" | grep -c negotiateauth
|
||||
dnl If GSSAPI libs were not found, remove extension from the list to be
|
||||
dnl built.
|
||||
dnl
|
||||
if test -z "$GSSAPI_INCLUDES" ; then
|
||||
if test -z "$_GSSAPI_FOUND" ; then
|
||||
AC_MSG_WARN([Cannot build negotiateauth without GSSAPI. Removing negotatiate from MOZ_EXTENSIONS.])
|
||||
MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|negotiateauth||'`
|
||||
USE_GSSAPI=
|
||||
fi
|
||||
|
||||
LIBS="$_SAVE_LIBS"
|
||||
@ -4680,8 +4679,8 @@ if test -n "$USE_GSSAPI" && test `echo "$MOZ_EXTENSIONS" | grep -c negotiateauth
|
||||
CPPFLAGS="$_SAVE_CPPFLAGS"
|
||||
|
||||
AC_SUBST(GSSAPI_INCLUDES)
|
||||
AC_SUBST(GSSAPI_LIBS)
|
||||
fi
|
||||
AC_SUBST(USE_GSSAPI)
|
||||
|
||||
|
||||
dnl Remove dupes
|
||||
|
@ -71,7 +71,7 @@ EXTRA_DSO_LDOPTS = \
|
||||
$(MOZ_COMPONENT_LIBS) \
|
||||
$(NULL)
|
||||
|
||||
ifneq (,$(GSSAPI_INCLUDES))
|
||||
ifeq (1,$(USE_GSSAPI))
|
||||
LOCAL_INCLUDES = -DUSE_GSSAPI $(GSSAPI_INCLUDES)
|
||||
CPPSRCS += nsNegotiateAuthGSSAPI.cpp
|
||||
endif
|
||||
|
@ -23,6 +23,7 @@
|
||||
* Wyllys Ingersoll <wyllys.ingersoll@sun.com>
|
||||
* Christopher Nebergall <cneberg@sandia.gov>
|
||||
* Darin Fisher <darin@meer.net>
|
||||
* Mark Mentovai <mark@moxienet.com>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
@ -114,6 +115,15 @@ typedef OM_uint32 (*gss_release_name_type)(
|
||||
OM_uint32 *,
|
||||
gss_name_t *);
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
typedef KLStatus (*KLCacheHasValidTickets_type)(
|
||||
KLPrincipal,
|
||||
KLKerberosVersion,
|
||||
KLBoolean *,
|
||||
KLPrincipal *,
|
||||
char **);
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
// We define GSS_C_NT_HOSTBASED_SERVICE explicitly since it may be referenced
|
||||
@ -154,6 +164,12 @@ static PRBool gssFunInit = PR_FALSE;
|
||||
#define gss_release_buffer_ptr ((gss_release_buffer_type)*gssFunPtr[6])
|
||||
#define gss_release_name_ptr ((gss_release_name_type)*gssFunPtr[7])
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
PRFuncPtr *KLCacheHasValidTicketsPtr;
|
||||
#define KLCacheHasValidTickets_ptr \
|
||||
((KLCacheHasValidTickets_type)*KLCacheHasValidTicketsPtr)
|
||||
#endif
|
||||
|
||||
static nsresult
|
||||
gssInit()
|
||||
{
|
||||
@ -202,6 +218,15 @@ gssInit()
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
}
|
||||
#ifdef XP_MACOSX
|
||||
if (gssNativeImp &&
|
||||
!((PRFuncPtr)KLCacheHasValidTickets_ptr =
|
||||
PR_FindFunctionSymbol(lib, "KLCacheHasValidTickets"))) {
|
||||
LOG(("Fail to load KLCacheHasValidTickets function from gssapi library\n"));
|
||||
PR_UnloadLibrary(lib);
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
#endif
|
||||
|
||||
gssFunInit = PR_TRUE;
|
||||
return NS_OK;
|
||||
@ -395,7 +420,8 @@ nsNegotiateAuth::GetNextToken(const void *inToken,
|
||||
|
||||
KLBoolean found;
|
||||
if (gssNativeImp &&
|
||||
(KLCacheHasValidTickets(NULL, kerberosVersion_V5, &found, NULL, NULL)
|
||||
(KLCacheHasValidTickets_ptr(NULL, kerberosVersion_V5, &found, NULL,
|
||||
NULL)
|
||||
!= klNoErr || !found))
|
||||
{
|
||||
major_status = GSS_S_FAILURE;
|
||||
|
Loading…
Reference in New Issue
Block a user