1 --- nfs-utils-1.2.3.dist/configure.ac.orig 2010-09-28 14:24:16.000000000 +0200
2 +++ nfs-utils-1.2.3.dist/configure.ac 2010-10-03 14:47:50.699424847 +0200
5 dnl check for the keyutils libraries and headers
8 - dnl librpcsecgss already has a dependency on libgssapi,
9 - dnl but we need to make sure we get the right version
10 - if test "$enable_gss" = yes; then
15 if test "$knfsd_cv_glibc2" = no; then
17 dnl Invoked after AC_KERBEROS_V5; AC_LIBRPCSECGSS needs to have KRBLIBS set
20 + dnl Invoked after AC_KERBEROS_V5
21 + dnl AC_RPCSEC_VERSION needs to now which Kerberos implementation we're using
22 + dnl librpcsecgss already has a dependency on libgssapi,
23 + dnl but we need to make sure we get the right version
27 dnl Check for IPv6 support
28 --- nfs-utils-1.2.3.dist/aclocal/rpcsec_vers.m4.orig 2010-09-28 14:24:16.000000000 +0200
29 +++ nfs-utils-1.2.3.dist/aclocal/rpcsec_vers.m4 2010-10-03 14:53:06.379424854 +0200
31 dnl Checks librpcsec version
32 AC_DEFUN([AC_RPCSEC_VERSION], [
34 - PKG_CHECK_MODULES([GSSGLUE], [libgssglue >= 0.1])
35 + dnl libgssglue is needed only for MIT Kerberos
36 + if test "$gssapi_lib" = gssapi_krb5; then
37 + PKG_CHECK_MODULES([GSSGLUE], [libgssglue >= 0.1])
40 dnl TI-RPC replaces librpcsecgss
41 if test "$enable_tirpc" = no; then
42 --- nfs-utils-1.2.3.dist/aclocal/kerberos5.m4~ 2010-09-28 14:24:16.000000000 +0200
43 +++ nfs-utils-1.2.3.dist/aclocal/kerberos5.m4 2010-10-03 14:13:17.274424855 +0200
45 if test "$K5CONFIG" != ""; then
46 KRBCFLAGS=`$K5CONFIG --cflags`
47 KRBLIBS=`$K5CONFIG --libs gssapi`
48 - K5VERS=`$K5CONFIG --version | head -n 1 | awk '{split($(4),v,"."); if (v@<:@"3"@:>@ == "") v@<:@"3"@:>@ = "0"; print v@<:@"1"@:>@v@<:@"2"@:>@v@<:@"3"@:>@ }'`
49 AC_DEFINE_UNQUOTED(KRB5_VERSION, $K5VERS, [Define this as the Kerberos version number])
50 if test -f $dir/include/gssapi/gssapi_krb5.h -a \
51 \( -f $dir/lib/libgssapi_krb5.a -o \
52 -f $dir/lib64/libgssapi_krb5.a -o \
53 -f $dir/lib64/libgssapi_krb5.so -o \
54 -f $dir/lib/libgssapi_krb5.so \) ; then
55 + K5VERS=`$K5CONFIG --version | head -n 1 | awk '{split($(4),v,"."); if (v@<:@"3"@:>@ == "") v@<:@"3"@:>@ = "0"; print v@<:@"1"@:>@v@<:@"2"@:>@v@<:@"3"@:>@ }'`
56 AC_DEFINE(HAVE_KRB5, 1, [Define this if you have MIT Kerberos libraries])
58 dnl If we are using MIT K5 1.3.1 and before, we *MUST* use the
60 dnl of Heimdal Kerberos on SuSe
61 elif test \( -f $dir/include/heim_err.h -o\
62 -f $dir/include/heimdal/heim_err.h \) -a \
63 - -f $dir/lib/libroken.a; then
64 + \( -f $dir/lib/libroken.a -o \
65 + -f $dir/lib64/libroken.a -o \
66 + -f $dir/lib64/libroken.so -o \
67 + -f $dir/lib/libroken.so \) ; then
68 + K5VERS=`$K5CONFIG --version | head -n 1 | awk '{split($(2),v,"."); if (v@<:@"3"@:>@ == "") v@<:@"3"@:>@ = "0"; print v@<:@"1"@:>@v@<:@"2"@:>@v@<:@"3"@:>@ }'`
69 AC_DEFINE(HAVE_HEIMDAL, 1, [Define this if you have Heimdal Kerberos libraries])
72 --- nfs-utils-1.2.3.dist/utils/gssd/context_lucid.c.orig 2010-09-28 14:24:16.000000000 +0200
73 +++ nfs-utils-1.2.3.dist/utils/gssd/context_lucid.c 2010-10-03 14:31:31.150424854 +0200
77 printerr(2, "DEBUG: %s: lucid version!\n", __FUNCTION__);
79 + maj_stat = gss_krb5_export_lucid_sec_context(&min_stat, &ctx,
82 maj_stat = gss_export_lucid_sec_context(&min_stat, &ctx,
85 if (maj_stat != GSS_S_COMPLETE) {
86 pgsserr("gss_export_lucid_sec_context",
87 maj_stat, min_stat, &krb5oid);
90 retcode = prepare_krb5_rfc4121_buffer(lctx, buf, endtime);
93 + maj_stat = gss_krb5_free_lucid_sec_context(&min_stat, return_ctx);
95 maj_stat = gss_free_lucid_sec_context(&min_stat, ctx, return_ctx);
97 if (maj_stat != GSS_S_COMPLETE) {
98 pgsserr("gss_export_lucid_sec_context",
99 maj_stat, min_stat, &krb5oid);
100 --- nfs-utils-1.2.3.dist/utils/gssd/krb5_util.c.orig 2010-09-28 14:24:16.000000000 +0200
101 +++ nfs-utils-1.2.3.dist/utils/gssd/krb5_util.c 2010-10-03 14:33:07.992424854 +0200
105 #include <gssapi/gssapi.h>
106 -#ifdef USE_PRIVATE_KRB5_FUNCTIONS
108 #include <gssapi/gssapi_krb5.h>
115 - krb5_cc_cursor cur;
119 + krb5_creds pattern;
120 + krb5_const_realm client_realm;
122 + krb5_cc_clear_mcred(&pattern);
124 + client_realm = krb5_principal_get_realm (context, principal);
126 + ret = krb5_make_principal (context, &pattern.server,
127 + client_realm, KRB5_TGS_NAME, client_realm,
130 + krb5_err (context, 1, ret, "krb5_make_principal");
131 + pattern.client = principal;
133 + ret = krb5_cc_retrieve_cred (context, ccache, 0, &pattern, &creds);
134 + krb5_free_principal (context, pattern.server);
136 + if (ret == KRB5_CC_END)
138 + krb5_err (context, 1, ret, "krb5_cc_retrieve_cred");
141 + found = creds.times.endtime > time(NULL);
143 + krb5_free_cred_contents (context, &creds);
145 + krb5_cc_cursor cur;
147 ret = krb5_cc_start_seq_get(context, ccache, &cur);
151 krb5_free_cred_contents(context, &creds);
153 krb5_cc_end_seq_get(context, ccache, &cur);
160 krb5_free_principal(context, principal);
163 +#define KRB5_TC_OPENCLOSE 0x00000001
165 krb5_cc_set_flags(context, ccache, KRB5_TC_OPENCLOSE);
166 krb5_cc_close(context, ccache);
168 @@ -1316,12 +1316,21 @@
169 * If we failed for any reason to produce global
170 * list of supported enctypes, use local default here.
173 + if (krb5_enctypes == NULL)
174 + maj_stat = gss_krb5_set_allowable_enctypes(&min_stat, credh,
175 + num_enctypes, enctypes);
177 + maj_stat = gss_krb5_set_allowable_enctypes(&min_stat, credh,
178 + num_krb5_enctypes, krb5_enctypes);
180 if (krb5_enctypes == NULL)
181 maj_stat = gss_set_allowable_enctypes(&min_stat, credh,
182 &krb5oid, num_enctypes, enctypes);
184 maj_stat = gss_set_allowable_enctypes(&min_stat, credh,
185 &krb5oid, num_krb5_enctypes, krb5_enctypes);
188 if (maj_stat != GSS_S_COMPLETE) {
189 pgsserr("gss_set_allowable_enctypes",