From 601644f27073edd2c5df910001cbaa02d93eb19a Mon Sep 17 00:00:00 2001 From: James Hunter Date: Fri, 10 Jan 2025 19:15:28 +0000 Subject: [PATCH] Fix integer overflow in bringetbitmap() Function bringetbitmap() returns "totalpages * 10", where existing code ensures that "totalpages" is <= MaxBlockNumber. However, "totalpages" was declared to be of type "int", which is too small to hold (MaxBlockNumber * 10) or even just MaxBlockNumber. To avoid integer overflow, just declare "totalpages" to be of type "int64", rather than "int". Discussion: https://www.postgresql.org/message-id/07704817-6fa0-460c-b1cf-cd18f7647041@basealt.ru --- src/backend/access/brin/brin.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/access/brin/brin.c b/src/backend/access/brin/brin.c index 9a98454757..4289142e20 100644 --- a/src/backend/access/brin/brin.c +++ b/src/backend/access/brin/brin.c @@ -567,7 +567,7 @@ bringetbitmap(IndexScanDesc scan, TIDBitmap *tbm) BrinOpaque *opaque; BlockNumber nblocks; BlockNumber heapBlk; - int totalpages = 0; + int64 totalpages = 0; FmgrInfo *consistentFn; MemoryContext oldcxt; MemoryContext perRangeCxt; -- 2.40.1