From 12639c577f297687539283bf8877a5583ecb8447 Mon Sep 17 00:00:00 2001 From: Marios Andreopoulos Date: Mon, 25 Aug 2014 18:54:50 +0300 Subject: [PATCH 1/5] Remove newline characters from ssh key before processing it. Fixes issue #370: https://github.com/gogits/gogs/issues/370 --- routers/user/setting.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/routers/user/setting.go b/routers/user/setting.go index e091bc438..21ff6df7c 100644 --- a/routers/user/setting.go +++ b/routers/user/setting.go @@ -171,7 +171,10 @@ func SettingsSSHKeysPost(ctx *middleware.Context, form auth.AddSSHKeyForm) { return } - if ok, err := models.CheckPublicKeyString(form.Content); !ok { + // Remove newline characters from form.KeyContent + cleanKeyContent := strings.Replace(form.KeyContent, "\n", "", -1), + + if ok, err := models.CheckPublicKeyString(cleanKeyContent); !ok { ctx.Flash.Error(ctx.Tr("form.invalid_ssh_key", err.Error())) ctx.Redirect("/user/settings/ssh") return @@ -180,7 +183,7 @@ func SettingsSSHKeysPost(ctx *middleware.Context, form auth.AddSSHKeyForm) { k := &models.PublicKey{ OwnerId: ctx.User.Id, Name: form.SSHTitle, - Content: form.Content, + Content: cleanKeyContent, } if err := models.AddPublicKey(k); err != nil { if err == models.ErrKeyAlreadyExist { From b40922f4d47001dcd7eeff811fcb96462e4bda41 Mon Sep 17 00:00:00 2001 From: Marios Andreopoulos Date: Mon, 25 Aug 2014 20:07:47 +0300 Subject: [PATCH 2/5] remove extra comma --- routers/user/setting.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routers/user/setting.go b/routers/user/setting.go index 21ff6df7c..51a647e3a 100644 --- a/routers/user/setting.go +++ b/routers/user/setting.go @@ -172,7 +172,7 @@ func SettingsSSHKeysPost(ctx *middleware.Context, form auth.AddSSHKeyForm) { } // Remove newline characters from form.KeyContent - cleanKeyContent := strings.Replace(form.KeyContent, "\n", "", -1), + cleanKeyContent := strings.Replace(form.KeyContent, "\n", "", -1) if ok, err := models.CheckPublicKeyString(cleanKeyContent); !ok { ctx.Flash.Error(ctx.Tr("form.invalid_ssh_key", err.Error())) From 3d79f59671b7e74ea1c66cb7bcb09bc85575e787 Mon Sep 17 00:00:00 2001 From: Marios Andreopoulos Date: Mon, 25 Aug 2014 20:20:44 +0300 Subject: [PATCH 3/5] fix wrong variable name --- routers/user/setting.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/routers/user/setting.go b/routers/user/setting.go index 51a647e3a..028e75212 100644 --- a/routers/user/setting.go +++ b/routers/user/setting.go @@ -172,9 +172,9 @@ func SettingsSSHKeysPost(ctx *middleware.Context, form auth.AddSSHKeyForm) { } // Remove newline characters from form.KeyContent - cleanKeyContent := strings.Replace(form.KeyContent, "\n", "", -1) + cleanContent := strings.Replace(form.Content, "\n", "", -1) - if ok, err := models.CheckPublicKeyString(cleanKeyContent); !ok { + if ok, err := models.CheckPublicKeyString(cleanContent); !ok { ctx.Flash.Error(ctx.Tr("form.invalid_ssh_key", err.Error())) ctx.Redirect("/user/settings/ssh") return @@ -183,7 +183,7 @@ func SettingsSSHKeysPost(ctx *middleware.Context, form auth.AddSSHKeyForm) { k := &models.PublicKey{ OwnerId: ctx.User.Id, Name: form.SSHTitle, - Content: cleanKeyContent, + Content: cleanContent, } if err := models.AddPublicKey(k); err != nil { if err == models.ErrKeyAlreadyExist { From cd0ddcfa01ea06ff64e4a05032f718a4b3097c25 Mon Sep 17 00:00:00 2001 From: Marios Andreopoulos Date: Mon, 25 Aug 2014 20:35:23 +0300 Subject: [PATCH 4/5] fix typo --- routers/user/setting.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routers/user/setting.go b/routers/user/setting.go index 028e75212..37039041c 100644 --- a/routers/user/setting.go +++ b/routers/user/setting.go @@ -172,7 +172,7 @@ func SettingsSSHKeysPost(ctx *middleware.Context, form auth.AddSSHKeyForm) { } // Remove newline characters from form.KeyContent - cleanContent := strings.Replace(form.Content, "\n", "", -1) + cleanContent := string.Replace(form.Content, "\n", "", -1) if ok, err := models.CheckPublicKeyString(cleanContent); !ok { ctx.Flash.Error(ctx.Tr("form.invalid_ssh_key", err.Error())) From 510d5a5d74301ad0083b1ea10aef6caa17cde8d8 Mon Sep 17 00:00:00 2001 From: Marios Andreopoulos Date: Mon, 25 Aug 2014 21:07:08 +0300 Subject: [PATCH 5/5] import strings --- routers/user/setting.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/routers/user/setting.go b/routers/user/setting.go index 37039041c..d3b792134 100644 --- a/routers/user/setting.go +++ b/routers/user/setting.go @@ -5,6 +5,8 @@ package user import ( + "strings" + "github.com/Unknwon/com" "github.com/gogits/gogs/models" @@ -172,7 +174,7 @@ func SettingsSSHKeysPost(ctx *middleware.Context, form auth.AddSSHKeyForm) { } // Remove newline characters from form.KeyContent - cleanContent := string.Replace(form.Content, "\n", "", -1) + cleanContent := strings.Replace(form.Content, "\n", "", -1) if ok, err := models.CheckPublicKeyString(cleanContent); !ok { ctx.Flash.Error(ctx.Tr("form.invalid_ssh_key", err.Error()))