Your message dated Mon, 16 Jun 2008 14:17:06 +0000
with message-id <[EMAIL PROTECTED]>
and subject line Bug#480434: fixed in krb5 1.6.dfsg.4~beta1-2
has caused the Debian Bug report #480434,
regarding libkrb53: Delegation fails if an SPNEGO credential is passed to 
gss_krb5_copy_ccache
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [EMAIL PROTECTED]
immediately.)


-- 
480434: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=480434
Debian Bug Tracking System
Contact [EMAIL PROTECTED] with problems
--- Begin Message ---
Package: libkrb53
Version: 1.6.dfsg.3~beta1-4
Severity: normal
Tags: patch

When trying to delegate credentials using mod_auth_kerb, delegation
succeeds (mod_auth_kerb receives a delegated gss_cred_id_t), but when it
tries to copy that credential into a ccache so it can write it out for
CGI scripts to use later, the copy fails.

The copy fails because gss_krb5_copy_ccache (the function being used) is
trying to find a credential from the passed-in gss_union_cred_t whose
mechanism OID is either krb5_mechanism, or krb5_mechanism_old.  But the
gss_union_cred_t returned to mod_auth_kerb uses the SPNEGO mechanism OID
(since the browser used SPNEGO), which doesn't match either of those.

The gss_krb5_copy_ccache function only needs to set "mcred" to one or
the other of the Kerberos mechanism credential handles; if the top level
gss_union_cred_t uses SPNEGO, then it should contain a sub-credential
that uses one of the Kerberos mechanisms.  So one fix would be to make
gssint_get_mechanism_cred recurse when it receives an SPNEGO-mechanism
union_cred, and SPNEGO is not what was asked for.

It needs to get a reference to the SPNEGO mechanism OID, of course, but
the spnego_gss_get_mech_configs() function provides this.

So if the current mechs_array element doesn't match the passed-in
mech_type, but does match spnego_mech, then call back into
gssint_get_mechanism_cred with the current cred_array element (cast to a
gss_union_cred_t), and see if any of its sub-credentials match.  If not,
keep running through the loop.  If so, return the one that does match.

Attached is a proposed patch to do exactly that (generated from a
libkrb53 tree that already has all the other Debian patches applied).

*** krb5-get_mechanism_cred-recurse-on-spnego.patch
Make gssint_get_mechanism_cred recurse if it finds a mechs_array item that
matches the SPNEGO OID, but not the OID that it's looking for.  (SPNEGO
credentials might contain the needed OID.)  If a sub-cred is found that
matches, return it; otherwise keep looping.

diff -ur a/src/lib/gssapi/mechglue/g_glue.c b/src/lib/gssapi/mechglue/g_glue.c
--- a/src/lib/gssapi/mechglue/g_glue.c  2007-10-01 22:43:12.000000000 -0400
+++ b/src/lib/gssapi/mechglue/g_glue.c  2008-05-09 13:54:29.000000000 -0400
@@ -519,6 +519,8 @@
     return (major_status);
 }
 
+extern gss_mechanism *spnego_gss_get_mech_configs(void);
+
 /*
  * Glue routine for returning the mechanism-specific credential from a
  * external union credential.
@@ -529,6 +531,7 @@
     gss_OID            mech_type;
 {
     int                i;
+    gss_OID    spnego_mech = &(spnego_gss_get_mech_configs()[0]->mech_type);
     
     if (union_cred == GSS_C_NO_CREDENTIAL)
        return GSS_C_NO_CREDENTIAL;
@@ -536,6 +539,18 @@
     for (i=0; i < union_cred->count; i++) {
        if (g_OID_equal(mech_type, &union_cred->mechs_array[i]))
            return union_cred->cred_array[i];
+
+       /* for SPNEGO, check the next-lower set of creds */
+       if (g_OID_equal(spnego_mech, &union_cred->mechs_array[i])) {
+           gss_union_cred_t candidate_cred;
+           gss_cred_id_t    sub_cred;
+
+           candidate_cred = (gss_union_cred_t)union_cred->cred_array[i];
+           sub_cred = gssint_get_mechanism_cred(candidate_cred, mech_type);
+
+           if(sub_cred != GSS_C_NO_CREDENTIAL)
+               return sub_cred;
+       }
     }
     return GSS_C_NO_CREDENTIAL;
 }


-- System Information:
Debian Release: lenny/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (500, 'stable')
Architecture: i386 (i686)

Kernel: Linux 2.6.22-3-686 (SMP w/1 CPU core)
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Shell: /bin/sh linked to /bin/bash

Versions of packages libkrb53 depends on:
ii  libc6                         2.7-10     GNU C Library: Shared libraries
ii  libcomerr2                    1.40.8-2   common error description library
ii  libkeyutils1                  1.2-7      Linux Key Management Utilities (li

libkrb53 recommends no packages.

-- no debconf information



--- End Message ---
--- Begin Message ---
Source: krb5
Source-Version: 1.6.dfsg.4~beta1-2

We believe that the bug you reported is fixed in the latest version of
krb5, which is due to be installed in the Debian FTP archive:

krb5-admin-server_1.6.dfsg.4~beta1-2_i386.deb
  to pool/main/k/krb5/krb5-admin-server_1.6.dfsg.4~beta1-2_i386.deb
krb5-clients_1.6.dfsg.4~beta1-2_i386.deb
  to pool/main/k/krb5/krb5-clients_1.6.dfsg.4~beta1-2_i386.deb
krb5-doc_1.6.dfsg.4~beta1-2_all.deb
  to pool/main/k/krb5/krb5-doc_1.6.dfsg.4~beta1-2_all.deb
krb5-ftpd_1.6.dfsg.4~beta1-2_i386.deb
  to pool/main/k/krb5/krb5-ftpd_1.6.dfsg.4~beta1-2_i386.deb
krb5-kdc-ldap_1.6.dfsg.4~beta1-2_i386.deb
  to pool/main/k/krb5/krb5-kdc-ldap_1.6.dfsg.4~beta1-2_i386.deb
krb5-kdc_1.6.dfsg.4~beta1-2_i386.deb
  to pool/main/k/krb5/krb5-kdc_1.6.dfsg.4~beta1-2_i386.deb
krb5-pkinit_1.6.dfsg.4~beta1-2_i386.deb
  to pool/main/k/krb5/krb5-pkinit_1.6.dfsg.4~beta1-2_i386.deb
krb5-rsh-server_1.6.dfsg.4~beta1-2_i386.deb
  to pool/main/k/krb5/krb5-rsh-server_1.6.dfsg.4~beta1-2_i386.deb
krb5-telnetd_1.6.dfsg.4~beta1-2_i386.deb
  to pool/main/k/krb5/krb5-telnetd_1.6.dfsg.4~beta1-2_i386.deb
krb5-user_1.6.dfsg.4~beta1-2_i386.deb
  to pool/main/k/krb5/krb5-user_1.6.dfsg.4~beta1-2_i386.deb
krb5_1.6.dfsg.4~beta1-2.diff.gz
  to pool/main/k/krb5/krb5_1.6.dfsg.4~beta1-2.diff.gz
krb5_1.6.dfsg.4~beta1-2.dsc
  to pool/main/k/krb5/krb5_1.6.dfsg.4~beta1-2.dsc
libkadm55_1.6.dfsg.4~beta1-2_i386.deb
  to pool/main/k/krb5/libkadm55_1.6.dfsg.4~beta1-2_i386.deb
libkrb5-dbg_1.6.dfsg.4~beta1-2_i386.deb
  to pool/main/k/krb5/libkrb5-dbg_1.6.dfsg.4~beta1-2_i386.deb
libkrb5-dev_1.6.dfsg.4~beta1-2_i386.deb
  to pool/main/k/krb5/libkrb5-dev_1.6.dfsg.4~beta1-2_i386.deb
libkrb53_1.6.dfsg.4~beta1-2_i386.deb
  to pool/main/k/krb5/libkrb53_1.6.dfsg.4~beta1-2_i386.deb



A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [EMAIL PROTECTED],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Sam Hartman <[EMAIL PROTECTED]> (supplier of updated krb5 package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [EMAIL PROTECTED])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Format: 1.7
Date: Mon, 16 Jun 2008 09:29:00 -0400
Source: krb5
Binary: libkadm55 libkrb53 krb5-user krb5-clients krb5-rsh-server krb5-ftpd 
krb5-telnetd krb5-kdc krb5-kdc-ldap krb5-admin-server libkrb5-dev libkrb5-dbg 
krb5-pkinit krb5-doc
Architecture: source all i386
Version: 1.6.dfsg.4~beta1-2
Distribution: unstable
Urgency: low
Maintainer: Sam Hartman <[EMAIL PROTECTED]>
Changed-By: Sam Hartman <[EMAIL PROTECTED]>
Description: 
 krb5-admin-server - MIT Kerberos master server (kadmind)
 krb5-clients - Secure replacements for ftp, telnet and rsh using MIT Kerberos
 krb5-doc   - Documentation for MIT Kerberos
 krb5-ftpd  - Secure FTP server supporting MIT Kerberos
 krb5-kdc   - MIT Kerberos key server (KDC)
 krb5-kdc-ldap - MIT Kerberos key server (KDC) LDAP plugin
 krb5-pkinit - PKINIT plugin for MIT Kerberos
 krb5-rsh-server - Secure replacements for rshd and rlogind using MIT Kerberos
 krb5-telnetd - Secure telnet server supporting MIT Kerberos
 krb5-user  - Basic programs to authenticate using MIT Kerberos
 libkadm55  - MIT Kerberos administration runtime libraries
 libkrb5-dbg - Debugging files for MIT Kerberos
 libkrb5-dev - Headers and development libraries for MIT Kerberos
 libkrb53   - MIT Kerberos runtime libraries
Closes: 435427 480434 484371 484996 485473 485613
Changes: 
 krb5 (1.6.dfsg.4~beta1-2) unstable; urgency=low
 .
   [ Russ Allbery ]
   * Translation updates:
     - Japanese, thanks TANAKA, Atushi.
     - Russian, thanks Sergey Alyoshin.  (Closes: #485473)
     - Brazilian Portuguese, thanks Eder L. Marques.  (Closes: #485613)
     - Romanian, thanks Eddy Petrișor.  (Closes: #484996)
 .
   [ Sam Hartman ]
   * Upload 1.6.4 beta 1 to unstable.  As best I can tell evaluating the
     changes this is a strict improvement over 1.6.3 even though it is
     still a beta version.  There is not  an ABI change ; backing out would
     be relatively easy.
   * Patch from  Bryan Kadzban  to look inside spnego union_creds when
     looking for a specific mechanism cred.  This allows spnego creds to be
     used when copying out to a ccache after delegation, Closes: #480434
   * Ksu now calls krb5_verify_init_creds rather than using its own custom 
logic because that is correct and so it can take advantage of the following 
change.
   * krb5_verify_init_creds uses the default realm if it gets a referral
     realm as input for server, Closes: #435427
   * Add -D_FORTIFY_SOURCE=2 and -fstack-protector on ia32 and x86_64 at the 
request of  Moritz Muehlenhoff ; he was unsure that adding these flags on other 
platforms would be a good idea.  I'd be happy to expand the list at the request 
of port maintainers, Closes: #484371
   * Fix KDC purge code introduced in previous revision.
Files: 
 2c75cb742978804c66831d5f13009570 1088 net standard krb5_1.6.dfsg.4~beta1-2.dsc
 265531a019437f94269894cc2b7a42ac 843445 net standard 
krb5_1.6.dfsg.4~beta1-2.diff.gz
 8300048664659996faaa7129282cd36d 2148232 doc optional 
krb5-doc_1.6.dfsg.4~beta1-2_all.deb
 79d2a882cb3023ff9f02c020b4cda48a 151424 libs optional 
libkadm55_1.6.dfsg.4~beta1-2_i386.deb
 854c59e917b15a3a3f586a3bfdd78b56 475880 libs standard 
libkrb53_1.6.dfsg.4~beta1-2_i386.deb
 10adbc4affb171ddf57ef932531c0a5b 135870 net optional 
krb5-user_1.6.dfsg.4~beta1-2_i386.deb
 882d8130e45bbb05c37bd47b66bf18d2 208642 net optional 
krb5-clients_1.6.dfsg.4~beta1-2_i386.deb
 da6c03b040ffd05605f03b722774f3c9 86836 net optional 
krb5-rsh-server_1.6.dfsg.4~beta1-2_i386.deb
 92e39788774b2d443bd0cc917208433d 63192 net extra 
krb5-ftpd_1.6.dfsg.4~beta1-2_i386.deb
 7e4c2221501be4129230cf741bce0f9e 69352 net extra 
krb5-telnetd_1.6.dfsg.4~beta1-2_i386.deb
 471edeb076d0bc55b8d2db88c99493b1 181030 net optional 
krb5-kdc_1.6.dfsg.4~beta1-2_i386.deb
 228d07fe70bffd76371d9262510adb7a 101060 net extra 
krb5-kdc-ldap_1.6.dfsg.4~beta1-2_i386.deb
 5dcb9b0bb286e70e9df0c664454b1402 85520 net optional 
krb5-admin-server_1.6.dfsg.4~beta1-2_i386.deb
 60b217a48c73b885193a97f64be0b9ae 91958 libdevel extra 
libkrb5-dev_1.6.dfsg.4~beta1-2_i386.deb
 17831b072a8d5f0dccbf7234a4eec3f7 1417720 libdevel extra 
libkrb5-dbg_1.6.dfsg.4~beta1-2_i386.deb
 7afac73a9410ae9a78100b69dc3e601c 64068 net extra 
krb5-pkinit_1.6.dfsg.4~beta1-2_i386.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFIVm4x/I12czyGJg8RAs1fAJ0UtEauFF6mXbH3OUo58WEIwv/N1ACfTQXb
rmDbHMxLiSsnu0HBiZngwnE=
=q2Ib
-----END PGP SIGNATURE-----



--- End Message ---

Reply via email to