mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 00:03:57 -04:00 
			
		
		
		
	Have config_sspi_auth() permit IPv6 localhost connections.
Windows versions later than Windows Server 2003 map "localhost" to ::1. Account for that in the generated pg_hba.conf, fixing another oversight in commit f6dc6dd5ba54d52c0733aaafc50da2fbaeabb8b0. Back-patch to 9.0, like that commit. David Rowley and Noah Misch
This commit is contained in:
		
							parent
							
								
									740a4ec7f4
								
							
						
					
					
						commit
						8d9cb0bc48
					
				| @ -1035,6 +1035,7 @@ config_sspi_auth(const char *pgdata) | ||||
| 			   *domainname; | ||||
| 	const char *username; | ||||
| 	char	   *errstr; | ||||
| 	bool		have_ipv6; | ||||
| 	char		fname[MAXPGPATH]; | ||||
| 	int			res; | ||||
| 	FILE	   *hba, | ||||
| @ -1054,6 +1055,28 @@ config_sspi_auth(const char *pgdata) | ||||
| 		exit(2); | ||||
| 	} | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * Like initdb.c:setup_config(), determine whether the platform recognizes | ||||
| 	 * ::1 (IPv6 loopback) as a numeric host address string. | ||||
| 	 */ | ||||
| 	{ | ||||
| 		struct addrinfo *gai_result; | ||||
| 		struct addrinfo hints; | ||||
| 		WSADATA		wsaData; | ||||
| 
 | ||||
| 		hints.ai_flags = AI_NUMERICHOST; | ||||
| 		hints.ai_family = AF_UNSPEC; | ||||
| 		hints.ai_socktype = 0; | ||||
| 		hints.ai_protocol = 0; | ||||
| 		hints.ai_addrlen = 0; | ||||
| 		hints.ai_canonname = NULL; | ||||
| 		hints.ai_addr = NULL; | ||||
| 		hints.ai_next = NULL; | ||||
| 
 | ||||
| 		have_ipv6 = (WSAStartup(MAKEWORD(2, 2), &wsaData) == 0 && | ||||
| 					 getaddrinfo("::1", NULL, &hints, &gai_result) == 0); | ||||
| 	} | ||||
| 
 | ||||
| 	/* Check a Write outcome and report any error. */ | ||||
| #define CW(cond)	\ | ||||
| 	do { \ | ||||
| @ -1085,6 +1108,9 @@ config_sspi_auth(const char *pgdata) | ||||
| 	CW(fputs("# Configuration written by config_sspi_auth()\n", hba) >= 0); | ||||
| 	CW(fputs("host all all 127.0.0.1/32  sspi include_realm=1 map=regress\n", | ||||
| 			 hba) >= 0); | ||||
| 	if (have_ipv6) | ||||
| 		CW(fputs("host all all ::1/128  sspi include_realm=1 map=regress\n", | ||||
| 				 hba) >= 0); | ||||
| 	CW(fclose(hba) == 0); | ||||
| 
 | ||||
| 	snprintf(fname, sizeof(fname), "%s/pg_ident.conf", pgdata); | ||||
|  | ||||
| @ -345,6 +345,7 @@ sub mkvcbuild | ||||
| 	$pgregress_ecpg->AddIncludeDir('src\test\regress'); | ||||
| 	$pgregress_ecpg->AddDefine('HOST_TUPLE="i686-pc-win32vc"'); | ||||
| 	$pgregress_ecpg->AddDefine('FRONTEND'); | ||||
| 	$pgregress_ecpg->AddLibrary('ws2_32.lib'); | ||||
| 	$pgregress_ecpg->AddDirResourceFile('src\interfaces\ecpg\test'); | ||||
| 	$pgregress_ecpg->AddReference($libpgcommon, $libpgport); | ||||
| 
 | ||||
| @ -372,6 +373,7 @@ sub mkvcbuild | ||||
| 	$pgregress_isolation->AddIncludeDir('src\test\regress'); | ||||
| 	$pgregress_isolation->AddDefine('HOST_TUPLE="i686-pc-win32vc"'); | ||||
| 	$pgregress_isolation->AddDefine('FRONTEND'); | ||||
| 	$pgregress_isolation->AddLibrary('ws2_32.lib'); | ||||
| 	$pgregress_isolation->AddDirResourceFile('src\test\isolation'); | ||||
| 	$pgregress_isolation->AddReference($libpgcommon, $libpgport); | ||||
| 
 | ||||
| @ -605,6 +607,8 @@ sub mkvcbuild | ||||
| 	$pgregress->AddFile('src\test\regress\pg_regress_main.c'); | ||||
| 	$pgregress->AddIncludeDir('src\port'); | ||||
| 	$pgregress->AddDefine('HOST_TUPLE="i686-pc-win32vc"'); | ||||
| 	$pgregress->AddDefine('FRONTEND'); | ||||
| 	$pgregress->AddLibrary('ws2_32.lib'); | ||||
| 	$pgregress->AddDirResourceFile('src\test\regress'); | ||||
| 	$pgregress->AddReference($libpgcommon, $libpgport); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user