summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTom Yu <tlyu@mit.edu>2004-07-24 00:40:18 +0000
committerTom Yu <tlyu@mit.edu>2004-07-24 00:40:18 +0000
commitecc5fb3385495be9eabed5ef82bd245fab91f3f1 (patch)
tree5d16df7961b7bc86b5ff201e007dc86335d2a618 /src
parent20226b353004a566349dae8b1c5a4b1a403b5e72 (diff)
downloadkrb5-ecc5fb3385495be9eabed5ef82bd245fab91f3f1.tar.gz
krb5-ecc5fb3385495be9eabed5ef82bd245fab91f3f1.tar.xz
krb5-ecc5fb3385495be9eabed5ef82bd245fab91f3f1.zip
another krb4 ticket backdating fix
* kerberos_v4.c (kerberos_v4): Duplicate backdating fix for APPL_REQUEST as well. Fix comments. ticket: new version_reported: 1.3.3 target_version: 1.3.5 tags: pullup component: krb5-kdc git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16623 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r--src/kdc/ChangeLog5
-rw-r--r--src/kdc/kerberos_v4.c12
2 files changed, 11 insertions, 6 deletions
diff --git a/src/kdc/ChangeLog b/src/kdc/ChangeLog
index 968dfa45a..4d0103c87 100644
--- a/src/kdc/ChangeLog
+++ b/src/kdc/ChangeLog
@@ -1,3 +1,8 @@
+2004-07-23 Tom Yu <tlyu@mit.edu>
+
+ * kerberos_v4.c (kerberos_v4): Duplicate backdating fix for
+ APPL_REQUEST as well. Fix comments.
+
2004-06-07 Ezra Peisach <epeisach@mit.edu.edu>
* network.c (paddr): Use unsigned int for length.
diff --git a/src/kdc/kerberos_v4.c b/src/kdc/kerberos_v4.c
index ffa5bdd2b..84b632bff 100644
--- a/src/kdc/kerberos_v4.c
+++ b/src/kdc/kerberos_v4.c
@@ -740,8 +740,7 @@ kerberos_v4(struct sockaddr_in *client, KTEXT pkt)
v4endtime = krb_life_to_time(kerb_time.tv_sec, lifetime);
/*
* Adjust issue time backwards if necessary, due to
- * roundup in krb_time_to_life(). XXX This frobs
- * kerb_time, which is potentially problematic.
+ * roundup in krb_time_to_life().
*/
if (v4endtime > v4req_end)
request_backdate = v4endtime - v4req_end;
@@ -815,6 +814,8 @@ kerberos_v4(struct sockaddr_in *client, KTEXT pkt)
char *service; /* Service name */
char *instance; /* Service instance */
int kerno = 0; /* Kerberos error number */
+ unsigned int request_backdate = 0; /*How far to backdate
+ in seconds.*/
char tktrlm[REALM_SZ];
n_appl_req++;
@@ -934,11 +935,10 @@ kerberos_v4(struct sockaddr_in *client, KTEXT pkt)
v4endtime = krb_life_to_time(kerb_time.tv_sec, lifetime);
/*
* Adjust issue time backwards if necessary, due to
- * roundup in krb_time_to_life(). XXX This frobs
- * kerb_time, which is potentially problematic.
+ * roundup in krb_time_to_life().
*/
if (v4endtime > v4req_end)
- kerb_time.tv_sec -= v4endtime - v4req_end;
+ request_backdate = v4endtime - v4req_end;
/* unseal server's key from master key */
memcpy(key, &s_name_data.key_low, 4);
@@ -959,7 +959,7 @@ kerberos_v4(struct sockaddr_in *client, KTEXT pkt)
krb_create_ticket(tk, k_flags, ad->pname, ad->pinst,
ad->prealm, client_host.s_addr,
(char *) session_key, lifetime,
- kerb_time.tv_sec,
+ kerb_time.tv_sec - request_backdate,
s_name_data.name, s_name_data.instance,
key);
krb5_free_keyblock_contents(kdc_context, &k5key);