mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Don't send an empty SSPI negotiation packet at the end of the negotiation.
Fixes bug #3750
This commit is contained in:
		@@ -7,7 +7,7 @@
 | 
			
		||||
 * Portions Copyright (c) 1994, Regents of the University of California
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *	  $PostgreSQL: pgsql/src/interfaces/libpq/fe-auth.c,v 1.133 2007/11/15 21:14:46 momjian Exp $
 | 
			
		||||
 *	  $PostgreSQL: pgsql/src/interfaces/libpq/fe-auth.c,v 1.134 2007/12/04 13:02:53 mha Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -618,11 +618,18 @@ pg_SSPI_continue(PGconn *conn)
 | 
			
		||||
			return STATUS_ERROR;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (pqPacketSend(conn, 'p',
 | 
			
		||||
				   outbuf.pBuffers[0].pvBuffer, outbuf.pBuffers[0].cbBuffer))
 | 
			
		||||
		/*
 | 
			
		||||
		 * If the negotiation is complete, there may be zero bytes to send. The server is
 | 
			
		||||
		 * at this point not expecting any more data, so don't send it.
 | 
			
		||||
		 */
 | 
			
		||||
		if (outbuf.pBuffers[0].cbBuffer > 0)
 | 
			
		||||
		{
 | 
			
		||||
			FreeContextBuffer(outbuf.pBuffers[0].pvBuffer);
 | 
			
		||||
			return STATUS_ERROR;
 | 
			
		||||
			if (pqPacketSend(conn, 'p',
 | 
			
		||||
					   outbuf.pBuffers[0].pvBuffer, outbuf.pBuffers[0].cbBuffer))
 | 
			
		||||
			{
 | 
			
		||||
				FreeContextBuffer(outbuf.pBuffers[0].pvBuffer);
 | 
			
		||||
				return STATUS_ERROR;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		FreeContextBuffer(outbuf.pBuffers[0].pvBuffer);
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user