evolution-data-server-1.3.6.1 & kerberos 5 support



The e-d-s configuration file fails to properly detect KERBEROS 5:

        configure --with-krb5=/usr    ==> KERBEROS 5 not found

The source of the problem is test code within configure that compiles,
but segfaults when run [gcc-3.3.3 & gcc-4.0.1 on PPC]:

% cat krb5_test.c
        
        /* Override any gcc2 internal prototype to avoid an error.  */
        #ifdef __cplusplus
        extern "C"
        #endif
        /* We use char because int might match the return type of a gcc2
           builtin and then its argument prototype would still apply. 
        */
        char krb5_init_context ();
        int
        main ()
        {
        krb5_init_context ();
          ;
          return 0;
        }

% gcc -g -o krb5_test krb5_test.c -lkrb5 -lk5crypto -lcom_err -lgssapi_krb5

% ./krb5_test   ==> segfault

The fix is:

        /* Override any gcc2 internal prototype to avoid an error.  */
        #ifdef __cplusplus
        extern "C"
        #endif
        /* We use char because int might match the return type of a gcc2
           builtin and then its argument prototype would still apply.  */
        char krb5_init_context ();
        struct _krb5_context;
        typedef struct _krb5_context * krb5_context;
        int
        main ()
        {
        krb5_context context;
        krb5_init_context (&context);
          ;
          return 0;
        }

An updated garnome-fixes.diff is attached.


-Joseph


-- 
joseph_sacco [at] comcast [dot] net
--- evolution-data-server-1.3.6.1/configure-	2005-08-07 10:14:26.000000000 -0400
+++ evolution-data-server-1.3.6.1/configure	2005-08-07 10:29:22.000000000 -0400
@@ -24744,12 +24744,12 @@
   if test "x$ac_cv_env_NSS_CFLAGS_set" = "xset"; then
 	pkg_cv_NSS_CFLAGS=$ac_cv_env_NSS_CFLAGS_value
 elif test -n "$PKG_CONFIG"; then
-	if { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists \"mozilla-nss\" >/dev/null 2>&1") >&5
-  ($PKG_CONFIG --exists "mozilla-nss" >/dev/null 2>&1) 2>&5
+	if { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists \"firefox-nss\" >/dev/null 2>&1") >&5
+  ($PKG_CONFIG --exists "firefox-nss" >/dev/null 2>&1) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
-		pkg_cv_NSS_CFLAGS=`$PKG_CONFIG --cflags "mozilla-nss" 2>/dev/null`
+		pkg_cv_NSS_CFLAGS=`$PKG_CONFIG --cflags "firefox-nss" 2>/dev/null`
 	else
 		pkg_failed=yes
 	fi
@@ -24767,12 +24767,12 @@
   if test "x$ac_cv_env_NSS_LIBS_set" = "xset"; then
 	pkg_cv_NSS_LIBS=$ac_cv_env_NSS_LIBS_value
 elif test -n "$PKG_CONFIG"; then
-	if { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists \"mozilla-nss\" >/dev/null 2>&1") >&5
-  ($PKG_CONFIG --exists "mozilla-nss" >/dev/null 2>&1) 2>&5
+	if { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists \"firefox-nss\" >/dev/null 2>&1") >&5
+  ($PKG_CONFIG --exists "firefox-nss" >/dev/null 2>&1) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
-		pkg_cv_NSS_LIBS=`$PKG_CONFIG --libs "mozilla-nss" 2>/dev/null`
+		pkg_cv_NSS_LIBS=`$PKG_CONFIG --libs "firefox-nss" 2>/dev/null`
 	else
 		pkg_failed=yes
 	fi
@@ -24784,7 +24784,7 @@
 echo "${ECHO_T}$pkg_cv_NSS_LIBS" >&6
 
 if test $pkg_failed = yes; then
-	NSS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "mozilla-nss"`
+	NSS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "firefox-nss"`
 	# Put the nasty error message in config.log where it belongs
 	echo "$NSS_PKG_ERRORS" 1>&5
 
@@ -24806,8 +24806,8 @@
 
 				msg_smime="yes (Mozilla NSS)"
 			fi
-			mozilla_nspr="mozilla-nspr"
-			mozilla_nss="mozilla-nss"
+			mozilla_nspr="firefox-nspr"
+			mozilla_nss="firefox-nss"
 
 cat >>confdefs.h <<\_ACEOF
 #define HAVE_NSS 1
@@ -27895,10 +27895,13 @@
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
 char krb5_init_context ();
+struct _krb5_context;
+typedef struct _krb5_context * krb5_context;
 int
 main ()
 {
-krb5_init_context ();
+krb5_context context;
+krb5_init_context (&context);
   ;
   return 0;
 }
@@ -27946,10 +27949,13 @@
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
 char krb5_init_context ();
+struct _krb5_context;
+typedef struct _krb5_context * krb5_context;
 int
 main ()
 {
-krb5_init_context ();
+krb_context context;
+krb5_init_context (&context);
   ;
   return 0;
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]