summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTom Yu <tlyu@mit.edu>2008-07-17 23:40:32 +0000
committerTom Yu <tlyu@mit.edu>2008-07-17 23:40:32 +0000
commitd615494f776d692c84f246aaf458096e98fdc952 (patch)
treede114d2cf6f9188b34f11b309f4f6f1a2595ade3 /src
parente4dce79da9896337566fa8b7742e894373ae5506 (diff)
downloadkrb5-d615494f776d692c84f246aaf458096e98fdc952.tar.gz
krb5-d615494f776d692c84f246aaf458096e98fdc952.tar.xz
krb5-d615494f776d692c84f246aaf458096e98fdc952.zip
In krb5_rc_io_creat(), unlink any existing rcache file before trying
to create a new rcache. This allows better recovery from corrupt rcache files. ticket: 6018 target_version: 1.6.4 tags: pullup git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@20536 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r--src/lib/krb5/rcache/rc_io.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/lib/krb5/rcache/rc_io.c b/src/lib/krb5/rcache/rc_io.c
index 94e0e542a..59d15c2fa 100644
--- a/src/lib/krb5/rcache/rc_io.c
+++ b/src/lib/krb5/rcache/rc_io.c
@@ -82,6 +82,7 @@ krb5_rc_io_creat(krb5_context context, krb5_rc_iostuff *d, char **fn)
(void) strcpy(d->fn, dir);
(void) strcat(d->fn, PATH_SEPARATOR);
(void) strcat(d->fn, *fn);
+ unlink(d->fn);
d->fd = THREEPARAMOPEN(d->fn, O_WRONLY | O_CREAT | O_TRUNC | O_EXCL |
O_BINARY, 0600);
} else {
@@ -418,7 +419,7 @@ krb5_rc_io_read(krb5_context context, krb5_rc_iostuff *d, krb5_pointer buf,
strerror(errno));
return KRB5_RC_IO_UNKNOWN;
}
- if (count == 0)
+ if (count != num)
return KRB5_RC_IO_EOF;
return 0;
}