Re: Possible api miuse bms_next_member - Mailing list pgsql-hackers

From Ranier Vilela
Subject Re: Possible api miuse bms_next_member
Date
Msg-id CAEudQAo8Y-HgBB+kno-2ysokvJL7g=AiwzBjkN7LK6GCK=T=nQ@mail.gmail.com
Whole thread Raw
In response to Re: Possible api miuse bms_next_member  (Matthias van de Meent <boekewurm+postgres@gmail.com>)
List pgsql-hackers
Em qua., 9 de abr. de 2025 às 10:27, Matthias van de Meent <boekewurm+postgres@gmail.com> escreveu:
On Wed, 9 Apr 2025 at 15:01, Ranier Vilela <ranier.vf@gmail.com> wrote:
>
> Hi.
>
> Per Coverity.
>
> CID 1608872: (#1 of 1): Improper use of negative value (NEGATIVE_RETURNS)
> 32. negative_returns: bms_next_member(child_joinrel->relids, -1) is passed to a parameter that cannot be negative.[show details]
>
> CID 1608871: (#1 of 1): Out-of-bounds access (OVERRUN)
> 32. overrun-buffer-arg: Calling add_child_eq_member with cur_ec->ec_childmembers and bms_next_member(child_joinrel->relids, -1) is suspicious because of the very large index, 4294967294. The index may be due to a negative parameter being interpreted as unsigned.
>
> Coverity has two new reports about use of the function *bms_next_member*.
> I think that he is right.
>
> The function bms_next_member can return NEGATIVE.
> So it is necessary to validate the function's return.

I don't know much about the planner, but I would expect a RelOptInfo's
relids field to always contain at least one relid when it's not
currently being constructed; thus guaranteeing a non-negative result
when looking for the first bit (as indicated by "next bit after -1").
I think it is worth the effort to prevent this.
In this particular case, the function *add_child_join_rel_equivalences*,
has the following comment:
"Note that this function won't be called at all unless we have at least some
 * reason to believe that the EC members it generates will be useful."
So I believe the function is not critical.

best regards,
Ranier Vilela

pgsql-hackers by date:

Previous
From: Matthias van de Meent
Date:
Subject: Re: Possible api miuse bms_next_member
Next
From: Tom Lane
Date:
Subject: Re: Cleaning up ERRCODE usage in our XML code