From 601644f27073edd2c5df910001cbaa02d93eb19a Mon Sep 17 00:00:00 2001
From: James Hunter <james.hunter.pg@gmail.com>
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

