Re: [PATCH] Missing Assert in the code
От | Alvaro Herrera |
---|---|
Тема | Re: [PATCH] Missing Assert in the code |
Дата | |
Msg-id | 202411251951.hblpeyqnncy2@alvherre.pgsql обсуждение исходный текст |
Ответы |
Re: [PATCH] Missing Assert in the code
|
Список | pgsql-hackers |
On 2024-Nov-25, Dmitry Nikitin wrote: > Subject: [PATCH 2/2] Add Assert to stop invalid values to pass on > > PageGetMaxOffsetNumber() can legitimately return zero > (InvalidOffsetNumber) as an indication of error. However there are no > any checks against that. As a result, for exampe, subsequent > PageGetItemId() will be accessing an array at -1. > @@ -236,6 +236,8 @@ getRightMostTuple(Page page) > { > OffsetNumber maxoff = PageGetMaxOffsetNumber(page); > > + Assert(OffsetNumberIsValid(maxoff)); > + > return (IndexTuple) PageGetItem(page, PageGetItemId(page, maxoff)); > } Hmm, I think if we believe this to be really possible, we should have an 'if/elog' test (or maybe a full ereport with ERRCODE_DATA_CORRUPTED errcode) rather than an assertion. I think the assertion adds nothing of value here, but maybe an 'if' test would. Did you examine the other callers of PageGetMaxOffsetNumber()? It's a large bunch. -- Álvaro Herrera Breisgau, Deutschland — https://www.EnterpriseDB.com/ […] indem ich in meinem Leben oft an euch gedacht, euch glücklich zu machen. Seyd es! A menudo he pensado en vosotros, en haceros felices. ¡Sedlo, pues! Heiligenstädter Testament, L. v. Beethoven, 1802 https://de.wikisource.org/wiki/Heiligenstädter_Testament
В списке pgsql-hackers по дате отправления: