[krbdev.mit.edu #5441] acct exp only sent in AS-REP

Shawn Emery via RT rt-comment at krbdev.mit.edu
Wed Feb 14 18:54:36 EST 2007


Currently the KDC will only populate the key expiration field in the 
AS-REP with the account expiration information.  It should provide 
either account exp or pw exp, whichever expires first.

These are diffs of the fix based on the 1.6 release:
kdc/do_as_req.c:
@@ -70,11 +70,11 @@
 #ifdef KRBCONF_KDC_MODIFIES_KDB
     krb5_boolean update_client = 0;
 #endif /* KRBCONF_KDC_MODIFIES_KDB */
     krb5_data e_data;
     register int i;
-    krb5_timestamp until, rtime;
+    krb5_timestamp until, rtime, etime = 0;
     char *cname = 0, *sname = 0;
     const char *fromstring = 0;
     char ktypestr[128];
     char rep_etypestr[128];
     char fromstringbuf[70];
@@ -369,11 +369,18 @@
     if ((errcode = fetch_last_req_info(&client, 
&reply_encpart.last_req))) {
        status = "FETCH_LAST_REQ";
        goto errout;
     }
     reply_encpart.nonce = request->nonce;
-    reply_encpart.key_exp = client.expiration;
+
+    /* Take the minimum of expiration or pw_expiration if not zero. */
+    if (client.expiration != 0 && client.pw_expiration != 0)
+       etime = min(client.expiration, client.pw_expiration);
+    else
+       etime = client.expiration ? client.expiration : 
client.pw_expiration;
+
+    reply_encpart.key_exp = etime;
     reply_encpart.flags = enc_tkt_reply.flags;
     reply_encpart.server = ticket_reply.server;

     /* copy the time fields EXCEPT for authtime; it's location
        is used for ktime */

Shawn.
--




More information about the krb5-bugs mailing list