After the upgrade to 5.4 I found httpd staying inactive on my test box.

It turned out mod_auth_kerb was missing some symbols:

# /etc/rc.d/httpd -d start
doing rc_read_runfile
doing rc_check
httpd
doing rc_pre
doing rc_start
/usr/sbin/httpd:/usr/lib/apache/modules/mod_auth_kerb.so: undefined 
symbol 'fix_dce'
/usr/sbin/httpd:/usr/lib/apache/modules/mod_auth_kerb.so: undefined 
symbol 'encode_octet_string'
/usr/sbin/httpd:/usr/lib/apache/modules/mod_auth_kerb.so: undefined 
symbol 'copy_octet_string'
/usr/sbin/httpd:/usr/lib/apache/modules/mod_auth_kerb.so: undefined 
symbol 'free_octet_string'
/usr/sbin/httpd:/usr/lib/apache/modules/mod_auth_kerb.so: undefined 
symbol 'decode_octet_string'
/usr/sbin/httpd:/usr/lib/apache/modules/mod_auth_kerb.so: undefined 
symbol 'copy_oid'
/usr/sbin/httpd:/usr/lib/apache/modules/mod_auth_kerb.so: undefined 
symbol 'decode_oid'
/usr/sbin/httpd:/usr/lib/apache/modules/mod_auth_kerb.so: undefined 
symbol 'encode_enumerated'
/usr/sbin/httpd:/usr/lib/apache/modules/mod_auth_kerb.so: undefined 
symbol 'length_enumerated'
/usr/sbin/httpd:/usr/lib/apache/modules/mod_auth_kerb.so: undefined 
symbol 'length_octet_string'
/usr/sbin/httpd:/usr/lib/apache/modules/mod_auth_kerb.so: undefined 
symbol 'free_oid'
/usr/sbin/httpd:/usr/lib/apache/modules/mod_auth_kerb.so: undefined 
symbol 'decode_enumerated'
/usr/sbin/httpd:/usr/lib/apache/modules/mod_auth_kerb.so: undefined 
symbol 'length_len'
/usr/sbin/httpd:/usr/lib/apache/modules/mod_auth_kerb.so: undefined 
symbol 'encode_oid'
/usr/sbin/httpd:/usr/lib/apache/modules/mod_auth_kerb.so: undefined 
symbol 'length_oid'
Syntax error on line 274 of /var/www/conf/httpd.conf:
Cannot load /usr/lib/apache/modules/mod_auth_kerb.so into server: Cannot load 
specified object
doing rc_rm_runfile
(failed)

The easiest solution for me was disabling mod_auth_kerb since I wasn't using 
it anymore, however I decided to take a closer look.

AFAICT some symbols were removed during the Heimdal update.

At least fix_dce got "missing" from a recent libasn1:
$ objdump -t /usr/lib/libasn1.so.19.0 | grep fix_dce
0000000000069930 g     F .text  0000000000000023 _heim_fix_dce
compared to an older version:
$ objdump -t /usr/lib/libasn1.so.18.0 | grep fix_dce
000000000007cc10 g     F .text  0000000000000023 fix_dce

I noticed mod_auth_kerb includes sources for these symbols, so I cooked up a 
patch to have them built and included in mod_auth_kerb.so.

Included patches to configure.in and configure seem to get rid of the missing 
symbols problem. I can now start my httpd again, however, lacking a 
configuration actually using mod_auth_kerb authentication, I did NOT test if 
the actual authentication works !

I'm most likely going to remove mod_auth_kerb from my config, so I'm mainly 
posting this hoping it's useful to others.

regards,
Remco


configure.in patch:
$OpenBSD$
--- configure.in.orig   Mon Oct 28 09:48:18 2013
+++ configure.in        Mon Oct 28 09:48:28 2013
@@ -187,18 +187,7 @@ int main(int argc, char** argv)
      LDFLAGS="$ac_save_LDFLAGS"
 
      if test -z "$gssapi_supports_spnego"; then
-       if test -n "$have_heimdal"; then SPNEGO_SRCS="\
-               spnegokrb5/asn1_MechType.c         \
-               spnegokrb5/asn1_MechTypeList.c     \
-               spnegokrb5/asn1_ContextFlags.c     \
-               spnegokrb5/asn1_NegTokenInit.c     \
-               spnegokrb5/asn1_NegTokenTarg.c     \
-               spnegokrb5/init_sec_context.c      \
-               spnegokrb5/accept_sec_context.c    \
-               spnegokrb5/encapsulate.c           \
-               spnegokrb5/decapsulate.c           \
-               spnegokrb5/external.c"
-       else SPNEGO_SRCS="\
+       SPNEGO_SRCS="\
                spnegokrb5/asn1_MechType.c         \
                spnegokrb5/asn1_MechTypeList.c     \
                spnegokrb5/asn1_ContextFlags.c     \
@@ -215,7 +204,6 @@ int main(int argc, char** argv)
                spnegokrb5/encapsulate.c           \
                spnegokrb5/decapsulate.c           \
                spnegokrb5/external.c"
-       fi
      fi
   fi
 fi


configure patch:
$OpenBSD$
--- configure.orig      Wed Nov 22 11:33:58 2006
+++ configure   Mon Oct 28 09:56:28 2013
@@ -3931,18 +3931,7 @@ fi
      LDFLAGS="$ac_save_LDFLAGS"
 
      if test -z "$gssapi_supports_spnego"; then
-       if test -n "$have_heimdal"; then SPNEGO_SRCS="\
-               spnegokrb5/asn1_MechType.c         \
-               spnegokrb5/asn1_MechTypeList.c     \
-               spnegokrb5/asn1_ContextFlags.c     \
-               spnegokrb5/asn1_NegTokenInit.c     \
-               spnegokrb5/asn1_NegTokenTarg.c     \
-               spnegokrb5/init_sec_context.c      \
-               spnegokrb5/accept_sec_context.c    \
-               spnegokrb5/encapsulate.c           \
-               spnegokrb5/decapsulate.c           \
-               spnegokrb5/external.c"
-       else SPNEGO_SRCS="\
+       SPNEGO_SRCS="\
                spnegokrb5/asn1_MechType.c         \
                spnegokrb5/asn1_MechTypeList.c     \
                spnegokrb5/asn1_ContextFlags.c     \
@@ -3959,7 +3948,6 @@ fi
                spnegokrb5/encapsulate.c           \
                spnegokrb5/decapsulate.c           \
                spnegokrb5/external.c"
-       fi
      fi
   fi
 fi

Reply via email to