Module Name: krb5 Committed By: raeburn Date: Wed Nov 24 02:39:44 UTC 2004 Modified Files: krb5/src/lib/krb5/keytab/ChangeLog krb5/src/lib/krb5/keytab/kt_file.c Added Files: Removed Files: Log Message ticket: new target_version: 1.4 tags: pullup subject: fix missing locking in keytab; fix stdio handling too The keytab type list lock was implemented, but I missed the per-keytab lock. Since I was in there, I ripped out the bogus stdio buffer mangling that the code was doing, and set up a buffer to be used that we can sanitize later. * kt_file.c (struct _krb5_ktfile_data): Add mutex and buffer. (KTFILEBUFP, KTLOCK, KTUNLOCK, KTCHECKLOCK): New macros. (krb5_ktfile_resolve): Initialize mutex. (krb5_ktfile_close): Zap data buffer before freeing. (krb5_ktfile_get_entry, krb5_ktfile_start_seq_get, krb5_ktfile_get_next, krb5_ktfile_end_get, krb5_ktfile_add, krb5_ktfile_remove): Lock and unlock the mutex. (krb5_ktfileint_open): Check that the mutex is locked. Set the stdio buffer to the new buffer in the ktfile data. (krb5_ktfileint_write_entry, krb5_ktfileint_find_slot): Check that the mutex is locked. Don't call setbuf. Flush the stdio buffer after writing. To generate a diff of this commit: cvs diff -r5.72 -r5.73 krb5/src/lib/krb5/keytab/ChangeLog cvs diff -r5.12 -r5.13 krb5/src/lib/krb5/keytab/kt_file.c