Re: BUG #18247: Integer overflow leads to negative width
Richard Guo <guofenglinux@gmail.com>
From: Richard Guo <guofenglinux@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Alexander Lakhin <exclusion@gmail.com>, rekgrpth@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2023-12-18T05:45:33Z
Lists: pgsql-bugs
On Fri, Dec 15, 2023 at 11:30 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: > Richard Guo <guofenglinux@gmail.com> writes: > > On Fri, Dec 15, 2023 at 2:00 PM Alexander Lakhin <exclusion@gmail.com> > >> Your patch looks good to me, but maybe you would find it suitable to > fix in > >> passing one more integer overflow in costsize.c? > > > Nice catch. The overflow occurs when cost_bitmap_heap_scan() calls > > compute_bitmap_pages(), and the loop_count parameter is converted from > > double to int. I wonder if we can change the loop_count parameter to be > > double for compute_bitmap_pages() to avoid such overflow. > > However, I'd be a bit uncomfortable about back-patching; since that > function is globally exposed, it's at least possible that some > extension is calling it and would see an ABI break. Is it good enough > to fix this in HEAD? I'd argue yes, given that a loop_count larger > than INT_MAX seems like a pretty improbable case. I agree with you that it's good enough to fix this in HEAD. The lack of complaints from fields for so many years suggests that it's not a common case to have loop_count larger than INT_MAX. Thanks Richard
Commits
-
Prevent integer overflow when forming tuple width estimates.
- 7e1ce2b3de16 17.0 landed
-
compute_bitmap_pages' loop_count parameter should be double not int.
- 8b965c549dc8 17.0 landed