aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas Munro <tmunro@postgresql.org>2025-01-09 13:17:36 +1300
committerThomas Munro <tmunro@postgresql.org>2025-01-09 16:05:08 +1300
commitbe7489662e7759de7a8338d3e65cd6a22dfa4976 (patch)
tree8cf4789d971732bf2d72211ed7a3efc35ca064ac /src
parent0bff6f1da8424efe1ce9a78d9bb2fdd91fdba651 (diff)
downloadpostgresql-be7489662e7759de7a8338d3e65cd6a22dfa4976.tar.gz
postgresql-be7489662e7759de7a8338d3e65cd6a22dfa4976.zip
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
Diffstat (limited to 'src')
-rw-r--r--src/bin/pg_basebackup/receivelog.c2
-rw-r--r--src/bin/pg_basebackup/walmethods.c2
-rw-r--r--src/bin/pg_basebackup/walmethods.h2
3 files changed, 3 insertions, 3 deletions
diff --git a/src/bin/pg_basebackup/receivelog.c b/src/bin/pg_basebackup/receivelog.c
index 504d82bef67..e69ad912a25 100644
--- a/src/bin/pg_basebackup/receivelog.c
+++ b/src/bin/pg_basebackup/receivelog.c
@@ -192,7 +192,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 376ddf72b71..f21883d30d6 100644
--- a/src/bin/pg_basebackup/walmethods.c
+++ b/src/bin/pg_basebackup/walmethods.c
@@ -686,7 +686,7 @@ 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 54a22fe6070..1ebdd360e64 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;
/*