From: Michael Paquier Date: Mon, 20 Nov 2023 00:14:53 +0000 (+0900) Subject: Prevent overflow for block number in buffile.c X-Git-Url: http://git.postgresql.org/gitweb/?a=commitdiff_plain;h=3650e7a3933166b40f7f9043bd91f45d3467c74d;p=users%2Frhaas%2Fpostgres.git Prevent overflow for block number in buffile.c As coded, the start block calculated by BufFileAppend() would overflow once more than 16k files are used with a default block size. This issue existed before b1e5c9fa9ac4, but there's no reason not to be clean about it. Per report from Coverity, with a fix suggested by Tom Lane. --- diff --git a/src/backend/storage/file/buffile.c b/src/backend/storage/file/buffile.c index 2ca3783233..73e9aca9d2 100644 --- a/src/backend/storage/file/buffile.c +++ b/src/backend/storage/file/buffile.c @@ -904,7 +904,7 @@ BufFileSize(BufFile *file) int64 BufFileAppend(BufFile *target, BufFile *source) { - int64 startBlock = target->numFiles * BUFFILE_SEG_SIZE; + int64 startBlock = (int64) target->numFiles * BUFFILE_SEG_SIZE; int newNumFiles = target->numFiles + source->numFiles; int i;