Re: [PATCH] bms_prev_member() can read beyond the end of the array of allocated words

Greg Burd <greg@burd.me>

From: Greg Burd <greg@burd.me>
To: David Rowley <dgrowleyml@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-08-14T15:58:26Z
Lists: pgsql-hackers

Attachments

On Aug 14 2025, at 11:49 am, David Rowley <dgrowleyml@gmail.com> wrote:

> On Fri, 15 Aug 2025 at 03:43, Greg Burd <greg@burd.me> wrote:
>> Well, that was rushed.  Apologies.
> 
> Would you be ok with adding the Assert after the "a == NULL" check?, i.e:
> 
> if (a == NULL || prevbit == 0)
>    return -2;
> 
> /* Validate callers didn't give us something out of range */
> Assert(prevbit <= a->nwords * BITS_PER_BITMAPWORD);
> 
> David

Good thinking, less contorted logic and a more obvious check for NULL
and the result to expect in that case.

-greg

Commits

  1. Add Asserts to validate prevbit values in bms_prev_member