postgres.git / summary / log / commit / refs
commit 970b97eeb8f036e534abe183fd41604671f7674d
Author: Thomas Munro <tmunro@postgresql.org>
Date: Thu Jan 09 00:17:36 2025 +0000
First released in: 18.0, 13.19, 14.16, 15.11, 16.7, 17.3
Fix off_t overflow in pg_basebackup on Windows.
walmethods.c used off_t to navigate around a pg_wal.tar file that could
exceed 2GB, which doesn't work on Windows and would fail with misleading
errors. Use pgoff_t instead.
Back-patch to all supported branches.
Author: Davinder Singh <davinder.singh@enterprisedb.com>
Reported-by: Jakub Wartak <jakub.wartak@enterprisedb.com>
Discussion: https://postgr.es/m/CAKZiRmyM4YnokK6Oenw5JKwAQ3rhP0YTz2T-tiw5dAQjGRXE3Q%40mail.gmail.com
src/bin/pg_basebackup/receivelog.c | 2 +-
src/bin/pg_basebackup/walmethods.c | 2 +-
src/bin/pg_basebackup/walmethods.h | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/bin/pg_basebackup/receivelog.c b/src/bin/pg_basebackup/receivelog.c
index 7f22439ea6c..f7ba79188c1 100644
--- a/src/bin/pg_basebackup/receivelog.c
+++ b/src/bin/pg_basebackup/receivelog.c
@@ -191,7 +191,7 @@ static bool
close_walfile(StreamCtl *stream, XLogRecPtr pos)
{
char *fn;
- off_t currpos;
+ pgoff_t currpos;
int r;
char walfile_name[MAXPGPATH];
diff --git a/src/bin/pg_basebackup/walmethods.c b/src/bin/pg_basebackup/walmethods.c
index 5329c83a2b7..eaaabc5f374 100644
--- a/src/bin/pg_basebackup/walmethods.c
+++ b/src/bin/pg_basebackup/walmethods.c
@@ -691,7 +691,7 @@ static const WalWriteMethodOps WalTarMethodOps = {
typedef struct TarMethodFile
{
Walfile base;
- off_t ofs_start; /* Where does the *header* for this file start */
+ pgoff_t ofs_start; /* Where does the *header* for this file start */
char header[TAR_BLOCK_SIZE];
size_t pad_to_size;
} TarMethodFile;
diff --git a/src/bin/pg_basebackup/walmethods.h b/src/bin/pg_basebackup/walmethods.h
index 77eb0f08f3e..f7a6dc18439 100644
--- a/src/bin/pg_basebackup/walmethods.h
+++ b/src/bin/pg_basebackup/walmethods.h
@@ -17,7 +17,7 @@ typedef struct WalWriteMethod WalWriteMethod;
typedef struct
{
WalWriteMethod *wwmethod;
- off_t currpos;
+ pgoff_t currpos;
char *pathname;
/*
[parent: 026762dae39d]