need to append to not nuke the file
authorJohn Kohl <jtkohl@mit.edu>
Tue, 8 May 1990 13:42:01 +0000 (13:42 +0000)
committerJohn Kohl <jtkohl@mit.edu>
Tue, 8 May 1990 13:42:01 +0000 (13:42 +0000)
allocate extra space for the null end-of-list
want sizeof char, not char *

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

src/lib/krb5/keytab/file/ktf_util.c

index 2207d8bc526fc4fbc760d6b4f8f94c1ec801544d..fec787b968822dcb5ba91dd3d94a185aac0f2185 100644 (file)
@@ -64,7 +64,7 @@ int mode;
     krb5_error_code kerror;
 
     if (!(KTFILEP(id) = fopen(KTFILENAME(id),
-                             (mode == KRB5_LOCKMODE_EXCLUSIVE) ? "w" : "r")))
+                             (mode == KRB5_LOCKMODE_EXCLUSIVE) ? "a" : "r")))
        return errno;
     if (kerror = krb5_lock_file(KTFILEP(id), KTFILENAME(id),
                                mode)) {
@@ -127,7 +127,7 @@ krb5_keytab_entry **entrypp;
        return KRB5_KT_END;
     if (!count || (count < 0))
        return KRB5_KT_END;             /* XXX */
-    if (!(ret_entry->principal = (krb5_data **)calloc(count, sizeof(krb5_data *))))
+    if (!(ret_entry->principal = (krb5_data **)calloc(count+1, sizeof(krb5_data *))))
        return ENOMEM;
     for (i = 0; i < count; i++) {
        if (!xfread(&princ_size, sizeof(princ_size), 1, KTFILEP(id)))
@@ -196,7 +196,7 @@ krb5_keytab_entry *entry;
        if (!xfwrite(&size, sizeof(size), 1, KTFILEP(id))) {
            goto abend;
        }
-       if (!xfwrite((*princp)->data, sizeof(char *), size, KTFILEP(id))) {
+       if (!xfwrite((*princp)->data, sizeof(char), size, KTFILEP(id))) {
            goto abend;
        }
     }