Fix branch name escaping in compare url (#3311)

* Fixes #3303
This commit is contained in:
Deyong Zhu 2018-01-08 23:17:24 +08:00 committed by Lauris BH
parent f48680888c
commit d663cef2a5

View file

@ -10,6 +10,7 @@ import (
"container/list"
"fmt"
"io"
"net/url"
"path"
"strings"
@ -569,7 +570,19 @@ func ParseCompareInfo(ctx *context.Context) (*models.User, *models.Repository, *
// format: <base branch>...[<head repo>:]<head branch>
// base<-head: master...head:feature
// same repo: master...feature
infos := strings.Split(ctx.Params("*"), "...")
var (
headUser *models.User
headBranch string
isSameRepo bool
infoPath string
err error
)
infoPath, err = url.QueryUnescape(ctx.Params("*"))
if err != nil {
ctx.Handle(404, "QueryUnescape", err)
}
infos := strings.Split(infoPath, "...")
if len(infos) != 2 {
log.Trace("ParseCompareInfo[%d]: not enough compared branches information %s", baseRepo.ID, infos)
ctx.Handle(404, "CompareAndPullRequest", nil)
@ -579,13 +592,6 @@ func ParseCompareInfo(ctx *context.Context) (*models.User, *models.Repository, *
baseBranch := infos[0]
ctx.Data["BaseBranch"] = baseBranch
var (
headUser *models.User
headBranch string
isSameRepo bool
err error
)
// If there is no head repository, it means pull request between same repository.
headInfos := strings.Split(infos[1], ":")
if len(headInfos) == 1 {