mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +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:
		@@ -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];
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
 
 | 
			
		||||
@@ -17,7 +17,7 @@ typedef struct WalWriteMethod WalWriteMethod;
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
	WalWriteMethod *wwmethod;
 | 
			
		||||
	off_t		currpos;
 | 
			
		||||
	pgoff_t		currpos;
 | 
			
		||||
	char	   *pathname;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user