vol: prevent salvage segfault for orphaned vnode with out-of-range parent 85/14385/3
authorMark Vitale <mvitale@sinenomine.net>
Thu, 20 Aug 2020 20:09:02 +0000 (16:09 -0400)
committerBenjamin Kaduk <kaduk@mit.edu>
Wed, 13 Jan 2021 22:33:05 +0000 (17:33 -0500)
commit750628da77bb71e24ed3061431bbb913ff8d5f72
treeb090f90a082ba000cb1e2c7f379fc2c7ab397822
parent444a971edc47c34efbefed6e332ee6e843ae072b
vol: prevent salvage segfault for orphaned vnode with out-of-range parent

While salvaging a RW volume, salvager may segfault if it encounters an
orphaned directory with a parent vnode that does not exist.  For
example, if the large vnode index contains a maximum vnode of 2901, any
parent vnode encountered that is larger than 2901 will result in an
out-of-bounds reference to our vnode essence array, leading to a
segfault or undefined behavior.

Modify the logic to check for out-of-bounds parent vnodes, and log them
rather than segfaulting.

Change-Id: I49f53935830fbb428fe0bff04c33248d3806a4b2
Reviewed-on: https://gerrit.openafs.org/14385
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
src/vol/vol-salvage.c