99 "regexp"
1010 "strings"
1111
12+ "code.gitea.io/gitea/modules/git"
13+
1214 "gitea.com/go-chi/binding"
1315 "github.com/gobwas/glob"
1416)
@@ -24,30 +26,6 @@ const (
2426 ErrRegexPattern = "RegexPattern"
2527)
2628
27- // GitRefNamePatternInvalid is regular expression with unallowed characters in git reference name
28- // They cannot have ASCII control characters (i.e. bytes whose values are lower than \040, or \177 DEL), space, tilde ~, caret ^, or colon : anywhere.
29- // They cannot have question-mark ?, asterisk *, or open bracket [ anywhere
30- var GitRefNamePatternInvalid = regexp .MustCompile (`[\000-\037\177 \\~^:?*[]+` )
31-
32- // CheckGitRefAdditionalRulesValid check name is valid on additional rules
33- func CheckGitRefAdditionalRulesValid (name string ) bool {
34- // Additional rules as described at https://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html
35- if strings .HasPrefix (name , "/" ) || strings .HasSuffix (name , "/" ) ||
36- strings .HasSuffix (name , "." ) || strings .Contains (name , ".." ) ||
37- strings .Contains (name , "//" ) || strings .Contains (name , "@{" ) ||
38- name == "@" {
39- return false
40- }
41- parts := strings .Split (name , "/" )
42- for _ , part := range parts {
43- if strings .HasSuffix (part , ".lock" ) || strings .HasPrefix (part , "." ) {
44- return false
45- }
46- }
47-
48- return true
49- }
50-
5129// AddBindingRules adds additional binding rules
5230func AddBindingRules () {
5331 addGitRefNameBindingRule ()
@@ -67,16 +45,10 @@ func addGitRefNameBindingRule() {
6745 IsValid : func (errs binding.Errors , name string , val interface {}) (bool , binding.Errors ) {
6846 str := fmt .Sprintf ("%v" , val )
6947
70- if GitRefNamePatternInvalid . MatchString (str ) {
48+ if ! git . IsValidRefPattern (str ) {
7149 errs .Add ([]string {name }, ErrGitRefName , "GitRefName" )
7250 return false , errs
7351 }
74-
75- if ! CheckGitRefAdditionalRulesValid (str ) {
76- errs .Add ([]string {name }, ErrGitRefName , "GitRefName" )
77- return false , errs
78- }
79-
8052 return true , errs
8153 },
8254 })
0 commit comments