summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--models/ssh_key.go2
-rw-r--r--models/ssh_key_test.go13
2 files changed, 14 insertions, 1 deletions
diff --git a/models/ssh_key.go b/models/ssh_key.go
index 69699f24c1..f441c3e42c 100644
--- a/models/ssh_key.go
+++ b/models/ssh_key.go
@@ -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".
diff --git a/models/ssh_key_test.go b/models/ssh_key_test.go
index 4bb612a671..95cd4eeb1a 100644
--- a/models/ssh_key_test.go
+++ b/models/ssh_key_test.go
@@ -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) {