diff options
| author | Thomas Munro <tmunro@postgresql.org> | 2025-01-09 13:17:36 +1300 |
|---|---|---|
| committer | Thomas Munro <tmunro@postgresql.org> | 2025-01-09 16:05:16 +1300 |
| commit | 6b6901a26f5683d30e6a3192d5b3a7da1dba69c3 (patch) | |
| tree | 20d9c2a38b320ef0eda3c4a1162aad9b0aa0b8e4 /src/bin/pg_basebackup/walmethods.c | |
| parent | 70a7a37610f70f546ea651021c970f7d0c4b81b3 (diff) | |
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/bin/pg_basebackup/walmethods.c')
| -rw-r--r-- | src/bin/pg_basebackup/walmethods.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/bin/pg_basebackup/walmethods.c b/src/bin/pg_basebackup/walmethods.c index 602727f4d43..6204ba8aba7 100644 --- a/src/bin/pg_basebackup/walmethods.c +++ b/src/bin/pg_basebackup/walmethods.c @@ -63,7 +63,7 @@ static DirectoryMethodData *dir_data = NULL; typedef struct DirectoryMethodFile { int fd; - off_t currpos; + pgoff_t currpos; char *pathname; char *fullpath; char *temp_suffix; @@ -370,7 +370,7 @@ dir_write(Walfile f, const void *buf, size_t count) return r; } -static off_t +static pgoff_t dir_get_current_pos(Walfile f) { Assert(f != NULL); @@ -666,8 +666,8 @@ FreeWalDirectoryMethod(void) typedef struct TarMethodFile { - off_t ofs_start; /* Where does the *header* for this file start */ - off_t currpos; + pgoff_t ofs_start; /* Where does the *header* for this file start */ + pgoff_t currpos; char header[TAR_BLOCK_SIZE]; char *pathname; size_t pad_to_size; @@ -1005,7 +1005,7 @@ tar_compression_algorithm(void) return tar_data->compression_algorithm; } -static off_t +static pgoff_t tar_get_current_pos(Walfile f) { Assert(f != NULL); |
