summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorTom Yu <tlyu@mit.edu>2004-11-24 01:28:03 +0000
committerTom Yu <tlyu@mit.edu>2004-11-24 01:28:03 +0000
commit30f0fa1e2ef25e2c43105606ce2e663956990695 (patch)
treeb084c042ddf473d692708e9ed68ed7408d39f796 /src/lib
parent5e822947a9cc593baf2b8bcb69136f51607c7ef0 (diff)
downloadkrb5-30f0fa1e2ef25e2c43105606ce2e663956990695.tar.gz
krb5-30f0fa1e2ef25e2c43105606ce2e663956990695.tar.xz
krb5-30f0fa1e2ef25e2c43105606ce2e663956990695.zip
set errno=0 prior to fopen in kt_file
* kt_file.c (krb5_ktfileint_open): Update previous change by explicitly setting errno=0 prior to calling fopen(). Also, return EMFILE, not ENFILE, for compatibility with Solaris 8, which does set errno when out of file descriptors. ticket: new target_version: 1.4 tags: pullup git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16904 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/krb5/keytab/ChangeLog7
-rw-r--r--src/lib/krb5/keytab/kt_file.c6
2 files changed, 11 insertions, 2 deletions
diff --git a/src/lib/krb5/keytab/ChangeLog b/src/lib/krb5/keytab/ChangeLog
index 4b62fddb7..cf203ff84 100644
--- a/src/lib/krb5/keytab/ChangeLog
+++ b/src/lib/krb5/keytab/ChangeLog
@@ -1,3 +1,10 @@
+2004-11-23 Tom Yu <tlyu@mit.edu>
+
+ * kt_file.c (krb5_ktfileint_open): Update previous change by
+ explicitly setting errno=0 prior to calling fopen(). Also, return
+ EMFILE, not ENFILE, for compatibility with Solaris 8, which does
+ set errno when out of file descriptors.
+
2004-11-19 Tom Yu <tlyu@mit.edu>
* kt_file.c (krb5_ktfileint_open): Patch from Roland Dowdeswell to
diff --git a/src/lib/krb5/keytab/kt_file.c b/src/lib/krb5/keytab/kt_file.c
index d39fc0b3d..580302e50 100644
--- a/src/lib/krb5/keytab/kt_file.c
+++ b/src/lib/krb5/keytab/kt_file.c
@@ -999,6 +999,7 @@ krb5_ktfileint_open(krb5_context context, krb5_keytab id, int mode)
krb5_kt_vno kt_vno;
int writevno = 0;
+ errno = 0;
KTFILEP(id) = fopen(KTFILENAME(id),
(mode == KRB5_LOCKMODE_EXCLUSIVE) ?
fopen_mode_rbplus : fopen_mode_rb);
@@ -1006,12 +1007,13 @@ krb5_ktfileint_open(krb5_context context, krb5_keytab id, int mode)
if ((mode == KRB5_LOCKMODE_EXCLUSIVE) && (errno == ENOENT)) {
/* try making it first time around */
krb5_create_secure_file(context, KTFILENAME(id));
+ errno = 0;
KTFILEP(id) = fopen(KTFILENAME(id), fopen_mode_rbplus);
if (!KTFILEP(id))
- return errno ? errno : ENFILE;
+ return errno ? errno : EMFILE;
writevno = 1;
} else /* some other error */
- return errno ? errno : ENFILE;
+ return errno ? errno : EMFILE;
}
if ((kerror = krb5_lock_file(context, fileno(KTFILEP(id)), mode))) {
(void) fclose(KTFILEP(id));