From: Ken Raeburn Date: Fri, 23 Jan 2009 18:04:08 +0000 (+0000) Subject: hash db2 code breaks if st_blksize > 64k X-Git-Tag: krb5-1.7-alpha1~44 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=5c2d383292d4080d31e834919a527427fe1ecbe8;p=krb5.git hash db2 code breaks if st_blksize > 64k The hash db code assumes in places that the block size is no larger than 64K. There's a range check in the case where you don't have a file but provide initialization info. The btree code will cap the block size used at 64K. Apparently Sun's ZFS can report back a block size of 128K, causing the db2 tests to fail. Add such a cap to the hash db creation code. Note that our default configuration is to use the btree code when creating a new database, so it's unlikely that this will cause real-world problems unless someone went out of their way to specify use of the hash format. ticket: 6342 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@21786 dc483132-0cff-0310-8789-dd5450dbe970 --- diff --git a/src/plugins/kdb/db2/libdb2/hash/hash.c b/src/plugins/kdb/db2/libdb2/hash/hash.c index b68b1dc91..c1a66088a 100644 --- a/src/plugins/kdb/db2/libdb2/hash/hash.c +++ b/src/plugins/kdb/db2/libdb2/hash/hash.c @@ -328,6 +328,8 @@ init_hash(hashp, file, info) if (stat(file, &statbuf)) return (NULL); hashp->hdr.bsize = statbuf.st_blksize; + if (hashp->hdr.bsize > MAX_BSIZE) + hashp->hdr.bsize = MAX_BSIZE; hashp->hdr.bshift = __log2(hashp->hdr.bsize); } if (info) {