libdb btree page split on zero index corrupts db
authorTom Yu <tlyu@mit.edu>
Fri, 1 Feb 2008 01:03:11 +0000 (01:03 +0000)
committerTom Yu <tlyu@mit.edu>
Fri, 1 Feb 2008 01:03:11 +0000 (01:03 +0000)
commit85df09ef7fa81dc4db8490740cbf8e989204791c
tree977ff317437d8f450c75efefa76ea02691afbb67
parent63d05278674313f56b0b9299b43e69c8cf31c177
libdb btree page split on zero index corrupts db

Splitting a btree page on index 0 can corrupt the database if the key
length plus data length is exactly a certain value.  This certain size
causes the item to get the left page to itself, and causes the right
page to contain an erroneous additional index "hole" having an
uninitialized value.  This bug may be one of the remaining causes of
unexplained database corruption reported over the years.  Shawn Emery
provided useful data from actual instances of this corruption.

Add a test case for this bug.  (Raw libdb test rather than kdb; the
latter would be much harder.)

ticket: new
target_version: 1.6.4
tags: pullup
component: krb5-kdc

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@20214 dc483132-0cff-0310-8789-dd5450dbe970
src/plugins/kdb/db2/libdb2/btree/bt_split.c
src/plugins/kdb/db2/libdb2/test/run.test