From afdb597c9ce30a72c5c6f486c18a054502e3390a Mon Sep 17 00:00:00 2001 From: Andrew Thornton Date: Sun, 13 Oct 2019 09:05:33 +0100 Subject: [PATCH 1/2] IsBranchExist: return false if provided name is empty --- modules/git/repo_branch.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/git/repo_branch.go b/modules/git/repo_branch.go index 3e1261d294cf8..303c7b769045f 100644 --- a/modules/git/repo_branch.go +++ b/modules/git/repo_branch.go @@ -28,6 +28,9 @@ func IsBranchExist(repoPath, name string) bool { // IsBranchExist returns true if given branch exists in current repository. func (repo *Repository) IsBranchExist(name string) bool { + if name == "" { + return false + } _, err := repo.gogitRepo.Reference(plumbing.ReferenceName(BranchPrefix+name), true) return err == nil } From 9f7e5e9e60a09fe990bf42ec124e0c3722b15144 Mon Sep 17 00:00:00 2001 From: Andrew Thornton Date: Sun, 13 Oct 2019 09:18:44 +0100 Subject: [PATCH 2/2] Ensure that the reference returned is actually of a valid type --- modules/git/repo_branch.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/git/repo_branch.go b/modules/git/repo_branch.go index 303c7b769045f..a2bf9ac973e49 100644 --- a/modules/git/repo_branch.go +++ b/modules/git/repo_branch.go @@ -31,8 +31,11 @@ func (repo *Repository) IsBranchExist(name string) bool { if name == "" { return false } - _, err := repo.gogitRepo.Reference(plumbing.ReferenceName(BranchPrefix+name), true) - return err == nil + reference, err := repo.gogitRepo.Reference(plumbing.ReferenceName(BranchPrefix+name), true) + if err != nil { + return false + } + return reference.Type() != plumbing.InvalidReference } // Branch represents a Git branch.