set errno=0 prior to fopen in kt_file
authorTom Yu <tlyu@mit.edu>
Wed, 24 Nov 2004 01:28:03 +0000 (01:28 +0000)
committerTom Yu <tlyu@mit.edu>
Wed, 24 Nov 2004 01:28:03 +0000 (01:28 +0000)
* 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

src/lib/krb5/keytab/ChangeLog
src/lib/krb5/keytab/kt_file.c

index 4b62fddb705066ea6e221018cb06d9947be6abe1..cf203ff84b96912a791eecfef46c1e41ce9f4cf4 100644 (file)
@@ -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
index d39fc0b3d1266a5ed7e801cea0501dde7046c19e..580302e506b571af70f0891f78652822ef56644e 100644 (file)
@@ -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));