pgsql: amcheck: Tighten up validation of redirect line pointers.
От | Robert Haas |
---|---|
Тема | pgsql: amcheck: Tighten up validation of redirect line pointers. |
Дата | |
Msg-id | E1pgqlr-0000yY-AA@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
amcheck: Tighten up validation of redirect line pointers. Commit bbc1376b39627c6bddd8a0dc0a7dda24c91a97a0 added a new lp_valid[] array which records whether or not a line pointer was thought to be valid, but entries could sometimes get set to true in cases where that wasn't actually safe. Fix that. Suppose A is a redirect line pointer and B is the other line pointer to which it points. The old code could mishandle this situation in a couple of different ways. First, if B was unused, we'd complain about corruption but still set lp_valid[A] = true, causing later code to try to access the B as if it were pointing to a tuple. Second, if B was dead, we wouldn't complain about corruption at all, which is an oversight, and would also set lp_valid[A] = true, which would again confuse later code. Fix all that. In the case where B is a redirect, the old code was correct, but refactor things a bit anyway so that all of these cases are handled more symmetrically. Also add an Assert() and some comments. Andres Freund and Robert Haas Discussion: http://postgr.es/m/20230323172607.y3lejpntjnuis5vv%40awork3.anarazel.de Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/80d5e3a615518e9eee8ba4afa5cf05ebe486dbf6 Modified Files -------------- contrib/amcheck/verify_heapam.c | 40 +++++++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 9 deletions(-)
В списке pgsql-committers по дате отправления: