* rc_dfl.c (krb5_rc_dfl_expunage): Close the old, temporary reply
authorTheodore Tso <tytso@mit.edu>
Fri, 31 Mar 1995 21:48:37 +0000 (21:48 +0000)
committerTheodore Tso <tytso@mit.edu>
Fri, 31 Mar 1995 21:48:37 +0000 (21:48 +0000)
cache after we're done expunging it.

* rc_io.c (krb5_rc_io_move): Make duplicate copies of the filename
and the file descriptor (via malloc/strcpy and dup), so
that the old rc_io object can be cleanly closed without
affecting the new rc_io object.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@5327 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/krb5/rcache/ChangeLog
src/lib/krb5/rcache/rc_dfl.c
src/lib/krb5/rcache/rc_io.c

index 8818198ec365f13d01b0a9e7d3cfaac0bf86b953..01150216d0534bb96bc824c7e139cbb532c4c5a2 100644 (file)
@@ -1,3 +1,13 @@
+Fri Mar 31 16:44:34 1995  Theodore Y. Ts'o  (tytso@dcl)
+
+       * rc_dfl.c (krb5_rc_dfl_expunage): Close the old, temporary reply
+               cache after we're done expunging it.
+
+       * rc_io.c (krb5_rc_io_move): Make duplicate copies of the filename
+               and the file descriptor (via malloc/strcpy and dup), so
+               that the old rc_io object can be cleanly closed without
+               affecting the new rc_io object.
+
 Fri Mar 17 20:27:41 1995  John Gilmore  (gnu at toad.com)
 
        * Makefile.in (LDFLAGS):  Eliminate duplicate of config/pre.in.
index a6476109be60fa5303d8362dcee15bbb82aebd75..aecbb37e93799d1422332bc776c87eb126956f22 100644 (file)
@@ -590,6 +590,7 @@ krb5_rcache id;
        return KRB5_RC_IO;
     if (krb5_rc_io_move(context, &t->d, &((struct dfl_data *)tmp->data)->d))
        return KRB5_RC_IO;
+     (void) krb5_rc_dfl_close(context, tmp);
 #endif
     return 0;
 }
index dd59ea0847343073becb93332fcfee429788bdc4..8d61d5724688a619ac6cde67144a27aa5135b474 100644 (file)
@@ -235,8 +235,11 @@ krb5_error_code INTERFACE krb5_rc_io_move (context, new, old)
  if (rename(old->fn,new->fn) == -1) /* MUST be atomic! */
    return KRB5_RC_IO_UNKNOWN;
  (void) krb5_rc_io_close(context, new);
- new->fn = old->fn;
- new->fd = old->fd;
+ new->fn = malloc(strlen(old->fn)+1);
+ if (new->fn == 0)
+   return ENOMEM;
+ strcpy(new->fn, old->fn);
+ new->fd = dup(old->fd);
  return 0;
 }