mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Check for fseeko() failure in pg_dump's _tarAddFile().
Coverity pointed out, not unreasonably, that we checked fseeko's result at every other call site but these. Failure to seek in the temp file (note this is NOT pg_dump's output file) seems quite unlikely, and even if it did happen the file length cross-check further down would probably detect the problem. Still, that's a poor excuse for not checking the result of a system call.
This commit is contained in:
		@@ -1094,12 +1094,16 @@ _tarAddFile(ArchiveHandle *AH, TAR_MEMBER *th)
 | 
			
		||||
	/*
 | 
			
		||||
	 * Find file len & go back to start.
 | 
			
		||||
	 */
 | 
			
		||||
	fseeko(tmp, 0, SEEK_END);
 | 
			
		||||
	if (fseeko(tmp, 0, SEEK_END) != 0)
 | 
			
		||||
		exit_horribly(modulename, "error during file seek: %s\n",
 | 
			
		||||
					  strerror(errno));
 | 
			
		||||
	th->fileLen = ftello(tmp);
 | 
			
		||||
	if (th->fileLen < 0)
 | 
			
		||||
		exit_horribly(modulename, "could not determine seek position in archive file: %s\n",
 | 
			
		||||
					  strerror(errno));
 | 
			
		||||
	fseeko(tmp, 0, SEEK_SET);
 | 
			
		||||
	if (fseeko(tmp, 0, SEEK_SET) != 0)
 | 
			
		||||
		exit_horribly(modulename, "error during file seek: %s\n",
 | 
			
		||||
					  strerror(errno));
 | 
			
		||||
 | 
			
		||||
	_tarWriteHeader(th);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user