prdb_check: fix out of bounds array access in continuation entries
authorMichael Meffie <mmeffie@sinenomine.net>
Wed, 18 Feb 2015 02:54:46 +0000 (21:54 -0500)
committerBenjamin Kaduk <kaduk@mit.edu>
Wed, 18 Nov 2015 04:48:12 +0000 (23:48 -0500)
commit15e8678661ec49f5eac3954defad84c06b3e0164
tree54792fad7001726d7d2755b0aa27b535279644e7
parent3e9e244d1004972f202490faa0375768959f7690
prdb_check: fix out of bounds array access in continuation entries

A continuation entry (struct contentry) contains 39 id elements, however
a regular entry (struct prentry) contains only 10 id elements.
Attempting to access more than 10 elements of a regular entry is
undefined behavior.

Use a stuct contentry when when processing continuation entries in
prdb_check.  This is done to safely traverse the id arrays of the
continuation entries.  Use the new pr_PrintContEntry to print
continuation entries.

The undefined behavior manfests as a segmentation violation in
WalkNextChain() when built with GCC 4.8 with optimization enabled.

Change-Id: I7613345ee6b7b232c5a0645f4f302c3eac0cdc15
Reviewed-on: http://gerrit.openafs.org/11742
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
src/ptserver/db_verify.c