dir: Protect against circular hash chains
authorSimon Wilkinson <sxw@your-file-system.com>
Sat, 16 Jul 2011 21:59:12 +0000 (22:59 +0100)
committerDerrick Brashear <shadow@dementix.org>
Sat, 13 Aug 2011 12:56:31 +0000 (05:56 -0700)
commitbb25bdfcb059fc54a57fd4733ce3184e231ca88d
tree832c3a5bdffaf275a31214fb36dcc6a0246db2d6
parentd1946ffe9be0031a2daf907f5e96cf0ee7f5e15e
dir: Protect against circular hash chains

The dir package didn't protect against circular hash chains when
performing directory lookups. A corrupt directory could therefore
cause a client or a fileserver to go into an endless loop if that
directory contained a loop in its hash chain pointers.

Fix this by exiting the lookup if the hash chain has more elements
than the total number of entries in a directory. This maximum number
of entries is taken as being (number of entries per page) * (max
number of pages), which is considerably more than the real maximum
value.

Change-Id: I9e281571f3b01bd8de346ee5418df38b2f5edaa1
Reviewed-on: http://gerrit.openafs.org/5242
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
src/dir/dir.c