From 78874d13f872ea740d8c830ffef2aa76df84b6bd Mon Sep 17 00:00:00 2001 From: Rutger Broekhoff Date: Thu, 5 Sep 2019 10:35:34 +0000 Subject: [PATCH 1/2] Fix Go 1.13 invalid import path creation Signed-off-by: Rutger Broekhoff --- modules/context/context.go | 11 +++++++++++ modules/context/repo.go | 3 +++ 2 files changed, 14 insertions(+) diff --git a/modules/context/context.go b/modules/context/context.go index e89b2e25c4c95..f1fc30d71ea24 100644 --- a/modules/context/context.go +++ b/modules/context/context.go @@ -250,6 +250,17 @@ func Contexter() macaron.Handler { if ctx.Query("go-get") == "1" { ownerName := c.Params(":username") repoName := c.Params(":reponame") + if ownerName == "" || repoName == "" { + _, _ = c.Write([]byte(` + + + invalid import path + + +`)) + c.WriteHeader(404) + return + } branchName := "master" repo, err := models.GetRepositoryByOwnerAndName(ownerName, repoName) diff --git a/modules/context/repo.go b/modules/context/repo.go index 1499145f74f66..543ecde8064d7 100644 --- a/modules/context/repo.go +++ b/modules/context/repo.go @@ -202,6 +202,9 @@ func ComposeGoGetImport(owner, repo string) string { func EarlyResponseForGoGetMeta(ctx *Context) { username := ctx.Params(":username") reponame := ctx.Params(":reponame") + if username == "" || reponame == "" { + ctx.PlainText(404, []byte("invalid repository path")) + } ctx.PlainText(200, []byte(com.Expand(``, map[string]string{ "GoGetImport": ComposeGoGetImport(username, strings.TrimSuffix(reponame, ".git")), From cea91f61efd1867d27aaba7b4c5f23f35575e6cd Mon Sep 17 00:00:00 2001 From: Rutger Broekhoff Date: Thu, 5 Sep 2019 17:06:30 +0200 Subject: [PATCH 2/2] Apply suggested changes from #8100 Signed-off-by: Rutger Broekhoff --- modules/context/context.go | 8 +++++--- modules/context/repo.go | 7 ++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/modules/context/context.go b/modules/context/context.go index f1fc30d71ea24..ef6c19ed125c3 100644 --- a/modules/context/context.go +++ b/modules/context/context.go @@ -250,7 +250,9 @@ func Contexter() macaron.Handler { if ctx.Query("go-get") == "1" { ownerName := c.Params(":username") repoName := c.Params(":reponame") - if ownerName == "" || repoName == "" { + trimmedRepoName := strings.TrimSuffix(repoName, ".git") + + if ownerName == "" || trimmedRepoName == "" { _, _ = c.Write([]byte(` @@ -258,7 +260,7 @@ func Contexter() macaron.Handler { `)) - c.WriteHeader(404) + c.WriteHeader(400) return } branchName := "master" @@ -288,7 +290,7 @@ func Contexter() macaron.Handler { `, map[string]string{ - "GoGetImport": ComposeGoGetImport(ownerName, strings.TrimSuffix(repoName, ".git")), + "GoGetImport": ComposeGoGetImport(ownerName, trimmedRepoName), "CloneLink": models.ComposeHTTPSCloneURL(ownerName, repoName), "GoDocDirectory": prefix + "{/dir}", "GoDocFile": prefix + "{/dir}/{file}#L{line}", diff --git a/modules/context/repo.go b/modules/context/repo.go index 543ecde8064d7..3ef726f2e8ee4 100644 --- a/modules/context/repo.go +++ b/modules/context/repo.go @@ -201,13 +201,14 @@ func ComposeGoGetImport(owner, repo string) string { // .netrc file. func EarlyResponseForGoGetMeta(ctx *Context) { username := ctx.Params(":username") - reponame := ctx.Params(":reponame") + reponame := strings.TrimSuffix(ctx.Params(":reponame"), ".git") if username == "" || reponame == "" { - ctx.PlainText(404, []byte("invalid repository path")) + ctx.PlainText(400, []byte("invalid repository path")) + return } ctx.PlainText(200, []byte(com.Expand(``, map[string]string{ - "GoGetImport": ComposeGoGetImport(username, strings.TrimSuffix(reponame, ".git")), + "GoGetImport": ComposeGoGetImport(username, reponame), "CloneLink": models.ComposeHTTPSCloneURL(username, reponame), }))) }