Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Fix off_t overflow in pg_basebackup on Windows.
authorThomas Munro <tmunro@postgresql.org>
Thu, 9 Jan 2025 00:17:36 +0000 (13:17 +1300)
committerThomas Munro <tmunro@postgresql.org>
Thu, 9 Jan 2025 03:05:01 +0000 (16:05 +1300)
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
src/bin/pg_basebackup/walmethods.c
src/bin/pg_basebackup/walmethods.h

index 70f4246764950ddbcece524f24267b539b95efd9..8543f3576a85d9a890cf8726570dd294934b801b 100644 (file)
@@ -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];
 
index f17600de9d245c37fdc9a68bdd517788932ea579..935429ea1e8198bca16d5cb567a2ed740c5c3d85 100644 (file)
@@ -691,7 +691,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;
index c9042600f950ce017b5c2160b401357e43a72c6a..488dd8f92d33003f9a8f18e14939dc3bd5744e90 100644 (file)
@@ -17,7 +17,7 @@ typedef struct WalWriteMethod WalWriteMethod;
 typedef struct
 {
    WalWriteMethod *wwmethod;
-   off_t       currpos;
+   pgoff_t     currpos;
    char       *pathname;
 
    /*