Thread: Incorrect assert in libpqwalreceiver

Incorrect assert in libpqwalreceiver

From
Jacob Brazeal
Date:
Hello hackers,

The libpqrcv_connect function asserts 'Assert(i < sizeof(keys))', where keys is declared as const char *keys[6];.

However, sizeof(keys) is not the correct way to check the array length (on my system, for example, it's 48 = 6 * 8 at this callsite, not 6.) 

I attached a patch to fix the assert, but I suppose we could also just remove the assert altogether, since it hasn't been doing anything for at least 8 years.

Regards,
Jacob
Attachment

Re: Incorrect assert in libpqwalreceiver

From
Heikki Linnakangas
Date:
On 09/03/2025 10:09, Jacob Brazeal wrote:
> The libpqrcv_connect function asserts 'Assert(i < sizeof(keys))', where 
> keys is declared as const char *keys[6];.
> 
> However, sizeof(keys) is not the correct way to check the array length 
> (on my system, for example, it's 48 = 6 * 8 at this callsite, not 6.)
> 
> I attached a patch to fix the assert, but I suppose we could also just 
> remove the assert altogether, since it hasn't been doing anything for at 
> least 8 years.

Committed, thanks!

I think it's still valuable; it's an easy mistake to make, to add a 
parameter and forget to increase the array size.

-- 
Heikki Linnakangas
Neon (https://neon.tech)