1
0
mirror of https://github.com/postgres/postgres.git synced 2025-04-27 22:56:53 +03:00

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
This commit is contained in:
Thomas Munro 2025-01-09 13:17:36 +13:00
parent 026762dae3
commit 970b97eeb8
3 changed files with 3 additions and 3 deletions

View File

@ -191,7 +191,7 @@ static bool
close_walfile(StreamCtl *stream, XLogRecPtr pos) close_walfile(StreamCtl *stream, XLogRecPtr pos)
{ {
char *fn; char *fn;
off_t currpos; pgoff_t currpos;
int r; int r;
char walfile_name[MAXPGPATH]; char walfile_name[MAXPGPATH];

View File

@ -691,7 +691,7 @@ static const WalWriteMethodOps WalTarMethodOps = {
typedef struct TarMethodFile typedef struct TarMethodFile
{ {
Walfile base; 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]; char header[TAR_BLOCK_SIZE];
size_t pad_to_size; size_t pad_to_size;
} TarMethodFile; } TarMethodFile;

View File

@ -17,7 +17,7 @@ typedef struct WalWriteMethod WalWriteMethod;
typedef struct typedef struct
{ {
WalWriteMethod *wwmethod; WalWriteMethod *wwmethod;
off_t currpos; pgoff_t currpos;
char *pathname; char *pathname;
/* /*