From: Greg Hudson Date: Sat, 23 May 2009 00:09:58 +0000 (+0000) Subject: In krb5_ktfileint_write_entry, add a no-op fseek in between reading X-Git-Tag: krb5-1.8-alpha1~459 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=694081fabc4d7133adb741264f0a6a8d8a37d0eb;p=krb5.git In krb5_ktfileint_write_entry, add a no-op fseek in between reading EOF and writing the placeholder length field. Otherwise we can run into an apparent bug in the Solaris 10 stdio library which causes the next no-op fseek after the fwrite to fail with EINVAL. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@22367 dc483132-0cff-0310-8789-dd5450dbe970 --- diff --git a/src/lib/krb5/keytab/kt_file.c b/src/lib/krb5/keytab/kt_file.c index 4139da5e0..4c90b8b47 100644 --- a/src/lib/krb5/keytab/kt_file.c +++ b/src/lib/krb5/keytab/kt_file.c @@ -1659,6 +1659,9 @@ krb5_ktfileint_find_slot(krb5_context context, krb5_keytab id, krb5_int32 *size_ return errno; if (!fread(&size, sizeof(size), 1, fp)) { /* Hit the end of file, reserve this slot. */ + /* Necessary to avoid a later fseek failing on Solaris 10. */ + if (fseek(fp, 0, SEEK_CUR)) + return errno; /* htonl(0) is 0, so no need to worry about byte order */ size = 0; if (!fwrite(&size, sizeof(size), 1, fp))