mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-04 00:02:52 -05:00 
			
		
		
		
	chkpass: check for NULL return value from crypt()
Report from Jozef Mlich using Coverity
This commit is contained in:
		
							parent
							
								
									85317e88cc
								
							
						
					
					
						commit
						6afe200cee
					
				@ -70,6 +70,7 @@ chkpass_in(PG_FUNCTION_ARGS)
 | 
			
		||||
	char	   *str = PG_GETARG_CSTRING(0);
 | 
			
		||||
	chkpass    *result;
 | 
			
		||||
	char		mysalt[4];
 | 
			
		||||
	char	   *crypt_output;
 | 
			
		||||
	static char salt_chars[] =
 | 
			
		||||
	"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
 | 
			
		||||
 | 
			
		||||
@ -92,7 +93,13 @@ chkpass_in(PG_FUNCTION_ARGS)
 | 
			
		||||
	mysalt[1] = salt_chars[random() & 0x3f];
 | 
			
		||||
	mysalt[2] = 0;				/* technically the terminator is not necessary
 | 
			
		||||
								 * but I like to play safe */
 | 
			
		||||
	strcpy(result->password, crypt(str, mysalt));
 | 
			
		||||
 | 
			
		||||
	if ((crypt_output = crypt(str, mysalt)) == NULL)
 | 
			
		||||
		ereport(ERROR,
 | 
			
		||||
				(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
 | 
			
		||||
				 errmsg("crypt() failed")));
 | 
			
		||||
	strcpy(result->password, crypt_output);
 | 
			
		||||
 | 
			
		||||
	PG_RETURN_POINTER(result);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user