summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJohn Kohl <jtkohl@mit.edu>1991-01-08 14:31:51 +0000
committerJohn Kohl <jtkohl@mit.edu>1991-01-08 14:31:51 +0000
commit2d16a40826cf8eba37a3b7048ef782d5c49e9d87 (patch)
tree56ea15928c8d38bc26f9d83aae42a256c621ebc4 /src
parent5bf6f5071fe88e572175f414c2f5a7d2c781ac29 (diff)
downloadkrb5-2d16a40826cf8eba37a3b7048ef782d5c49e9d87.tar.gz
krb5-2d16a40826cf8eba37a3b7048ef782d5c49e9d87.tar.xz
krb5-2d16a40826cf8eba37a3b7048ef782d5c49e9d87.zip
modify replay cache code to generalize it
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@1620 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r--src/lib/krb5/krb/rd_req_dec.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/lib/krb5/krb/rd_req_dec.c b/src/lib/krb5/krb/rd_req_dec.c
index 0028ca7dd..4d8c01e13 100644
--- a/src/lib/krb5/krb/rd_req_dec.c
+++ b/src/lib/krb5/krb/rd_req_dec.c
@@ -155,10 +155,23 @@ krb5_tkt_authent *tktauthent;
/* only check rcache if sender has provided one---some services
may not be able to use replay caches (such as datagram servers) */
- if (rcache && (retval = krb5_rc_store(rcache, tktauthent))) {
- tktauthent->ticket = 0;
- clean_authenticator();
- return retval;
+ if (rcache) {
+ krb5_donot_replay rep;
+
+ if (retval = krb5_auth_to_rep(tktauthent, &rep)) {
+ tktauthent->ticket = 0;
+ clean_authenticator();
+ return retval;
+ }
+ if (retval = krb5_rc_store(rcache, &rep)) {
+ xfree(rep.server);
+ xfree(rep.client);
+ tktauthent->ticket = 0;
+ clean_authenticator();
+ return retval;
+ }
+ xfree(rep.server);
+ xfree(rep.client);
}
tktauthent->ticket = 0;