Bug 86019 - kdelibs-3.2.92: gssapi support requires krb5-libs >= 1.3?
Summary: kdelibs-3.2.92: gssapi support requires krb5-libs >= 1.3?
Status: CLOSED FIXED
Alias: None
Product: kio
Classification: Frameworks and Libraries
Component: http (show other bugs)
Version: unspecified
Platform: RedHat Enterprise Linux Linux
: NOR critical
Target Milestone: ---
Assignee: Unassigned bugs mailing-list
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-07-26 17:09 UTC by Rex Dieter
Modified: 2004-09-15 12:08 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Rex Dieter 2004-07-26 17:09:01 UTC
Version:            (using KDE KDE 3.2.92)
Installed from:    RedHat RPMs
Compiler:          gcc version 3.2.3 20030502 (Red Hat Linux 3.2.3-34) 
OS:                Linux

kdelibs-3.2.92 fails to compile on RHEL3 (gcc 3.2.3, qt-3.3.2).  Tried both --enable-final and --disable-final, compilation stops in the same place:

make[4]: Entering directory `/usr/local/tmp/BUILD/kdelibs-3.2.92/kioslave/http'
/bin/sh ../../libtool --silent --mode=compile --tag=CXX g++ -DHAVE_CONFIG_H -I.-I. -I../.. -I../../dcop -I../../kio/kssl -I../../interfaces -I../../kio/httpfilter -I../../dcop -I../../libltdl -I../../kdefx -I../../kdecore -I../../kdeui -I../../kio -I../../kio/kio -I../../kio/kfile -I../.. -I/usr/lib/qt-3.3/include -I/usr/X11R6/include -I/usr/include/kde  -I/usr/kerberos/include  -DQT_THREAD_SUPPORT  -I/usr/kerberos/include   -D_REENTRANT  -DNDEBUG -DNO_DEBUG -O2 -O2 -g -pipe -march=i386 -mcpu=i686 -D_GNU_SOURCE -I/usr/kerberos/include -fno-exceptions -fno-check-new -fno-common  -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION  -c -o http.lo `test -f 'http.cc' || echo './'`http.cc
http.cc: In member function `QString HTTPProtocol::createNegotiateAuth()':
http.cc:5222: `GSS_C_NT_HOSTBASED_SERVICE' undeclared (first use this function)
http.cc:5222: (Each undeclared identifier is reported only once for each
   function it appears in.)
make[4]: *** [http.lo] Error 1
make[4]: Leaving directory `/usr/local/tmp/BUILD/kdelibs-3.2.92/kioslave/http'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/usr/local/tmp/BUILD/kdelibs-3.2.92/kioslave/http'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/usr/local/tmp/BUILD/kdelibs-3.2.92/kioslave'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/tmp/BUILD/kdelibs-3.2.92'
make: *** [all] Error 2
Comment 1 Rex Dieter 2004-07-26 20:29:17 UTC
Tracked it down to gssapi support.  RHEL3 has
krb5-libs-1.2.7
It appears to me from perusing the gssapi.h header file that GSS_C_NT_HOSTBASED_SERVICE
does not get defined (and only does get set if GSS_RFC_COMPLIANT_OIDS is 1).  The same header also includes:

#if defined(macintosh) || (defined(__MACH__) && defined(__APPLE__))
        #include <TargetConditionals.h>
...
        /* This is an API divergence in 1.2.3. This will be reconciled in 1.3, when
        all platforms will have RFC-compliant OID declarations. */
        #define GSS_RFC_COMPLIANT_OIDS 1
#else
        #define GSS_RFC_COMPLIANT_OIDS 0
#endif

Not knowing much more about krb5/gssapi support makes me guess that either gssapi support should be rewritten not to require the possibly missing symbol
GSS_C_NT_HOSTBASED_SERVICE
or configure might need to check for a newer krb5 (at least 1.3?).

I'll get to building with --without-gssapi for now.
Comment 2 Waldo Bastian 2004-08-01 17:46:48 UTC
CVS commit by waba: 

Catch incompatible GSS API (BR86019)
Rex: Can you check that this indeed compiles for you?
CCMAIL: 86019-done@bugs.kde.org


  M +19 -0     http.cc   1.620
  M +0 -2      http.h   1.162


--- kdelibs/kioslave/http/http.cc  #1.619:1.620
@@ -76,4 +76,10 @@
 #include <gssapi.h>
 #endif /* GSSAPI_MIT */
+
+// Catch uncompatible crap (BR86019)
+#if defined(GSS_RFC_COMPLIANT_OIDS) && (GSS_RFC_COMPLIANT_OIDS == 0)
+#undef HAVE_LIBGSSAPI
+#endif
+
 #endif /* HAVE_LIBGSSAPI */
 
@@ -5263,4 +5269,17 @@ QString HTTPProtocol::createNegotiateAut
   return auth;
 }
+#else
+
+// Dummy
+QCString HTTPProtocol::gssError( int, int )
+{
+  return "";
+}
+
+// Dummy
+QString HTTPProtocol::createNegotiateAuth()
+{
+  return QString::null;
+}
 #endif
 

--- kdelibs/kioslave/http/http.h  #1.161:1.162
@@ -434,5 +434,4 @@ protected:
   QString createDigestAuth( bool isForProxy = false );
 
-#ifdef HAVE_LIBGSSAPI
   /**
    * Creates the entity-header for Negotiate authentication.
@@ -444,5 +443,4 @@ protected:
    */
   QCString gssError( int major_status, int minor_status );
-#endif
 
   /**


Comment 3 Rex Dieter 2004-08-02 15:56:39 UTC
Thanks, the provided patch seems to do the trick (at least it compiles now).
Comment 4 Waldo Bastian 2004-09-15 12:08:09 UTC
CVS commit by waba: 

Make negotiate authentication work with MIT Kerberos 1.2.8
Patch by Karsten K