mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-10-30 22:11:07 +00:00 
			
		
		
		
	Fix SSH2 conditonal in key parsing code (#8806)
Avoid out of bounds error by using strings.HasPrefix to check for starting SSH2 text rather than assuming user input has at least 31 characters. Add tests for bad input as well. Fixes #8800
This commit is contained in:
		
					parent
					
						
							
								022d2d8beb
							
						
					
				
			
			
				commit
				
					
						dce22efbee
					
				
			
		
					 2 changed files with 14 additions and 1 deletions
				
			
		|  | @ -107,7 +107,7 @@ func parseKeyString(content string) (string, error) { | |||
| 
 | ||||
| 	var keyType, keyContent, keyComment string | ||||
| 
 | ||||
| 	if content[:len(ssh2keyStart)] == ssh2keyStart { | ||||
| 	if strings.HasPrefix(content, ssh2keyStart) { | ||||
| 		// Parse SSH2 file format. | ||||
| 
 | ||||
| 		// Transform all legal line endings to a single "\n". | ||||
|  |  | |||
|  | @ -131,6 +131,19 @@ AAAAC3NzaC1lZDI1NTE5AAAAICV0MGX/W9IvLA4FXpIuUcdDcbj5KX4syHgsTy7soVgf | |||
| 		_, err := CheckPublicKeyString(test.content) | ||||
| 		assert.NoError(t, err) | ||||
| 	} | ||||
| 
 | ||||
| 	for _, invalidKeys := range []struct { | ||||
| 		content string | ||||
| 	}{ | ||||
| 		{"test"}, | ||||
| 		{"---- NOT A REAL KEY ----"}, | ||||
| 		{"bad\nkey"}, | ||||
| 		{"\t\t:)\t\r\n"}, | ||||
| 		{"\r\ntest \r\ngitea\r\n\r\n"}, | ||||
| 	} { | ||||
| 		_, err := CheckPublicKeyString(invalidKeys.content) | ||||
| 		assert.Error(t, err) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func Test_calcFingerprint(t *testing.T) { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue