mirror of
https://github.com/go-gitea/gitea.git
synced 2024-09-30 03:26:01 -04:00
reject paths passed in for hook names in configuration
This commit is contained in:
parent
9acbb58769
commit
8b5debbfcc
@ -419,16 +419,16 @@ USER = root
|
|||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
[GitHooks]
|
[git.hooks]
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;;
|
;;
|
||||||
;; Git prereceive hook name
|
;; Git prereceive hook name
|
||||||
;GIT_HOOK_PRERECEIVE_NAME = prereceive
|
;GIT_HOOK_PRERECEIVE_NAME = pre-receive
|
||||||
;; Git post receive hook name
|
|
||||||
;GIT_HOOK_POSTRECEIVE_NAME = postreceive
|
|
||||||
;; Git update hook name
|
;; Git update hook name
|
||||||
;GIT_HOOK_UPDATE_NAME = update
|
;GIT_HOOK_UPDATE_NAME = update
|
||||||
|
;; Git post receive hook name
|
||||||
|
;GIT_HOOK_POSTRECEIVE_NAME = post-receive
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
@ -3,6 +3,13 @@
|
|||||||
|
|
||||||
package setting
|
package setting
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/modules/log"
|
||||||
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// Git hook settings
|
// Git hook settings
|
||||||
GitHookPrereceiveName string
|
GitHookPrereceiveName string
|
||||||
@ -10,9 +17,26 @@ var (
|
|||||||
GitHookUpdateName string
|
GitHookUpdateName string
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func isValidFileName(filename string) error {
|
||||||
|
if strings.Contains(filename, "/") || strings.Contains(filename, "\\") {
|
||||||
|
return fmt.Errorf("contains path components")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func loadHooksFrom(rootCfg ConfigProvider) {
|
func loadHooksFrom(rootCfg ConfigProvider) {
|
||||||
githooks := rootCfg.Section("GitHooks")
|
githooks := rootCfg.Section("git.hooks")
|
||||||
GitHookPrereceiveName = githooks.Key("GIT_HOOK_PRERECEIVE_NAME").MustString("pre-receive")
|
GitHookPrereceiveName = githooks.Key("GIT_HOOK_PRERECEIVE_NAME").MustString("pre-receive")
|
||||||
GitHookUpdateName = githooks.Key("GIT_HOOK_UPDATE_NAME").MustString("update")
|
GitHookUpdateName = githooks.Key("GIT_HOOK_UPDATE_NAME").MustString("update")
|
||||||
GitHookPostreceiveName = githooks.Key("GIT_HOOK_POSTRECEIVE_NAME").MustString("post-receive")
|
GitHookPostreceiveName = githooks.Key("GIT_HOOK_POSTRECEIVE_NAME").MustString("post-receive")
|
||||||
|
|
||||||
|
if err := isValidFileName(GitHookPrereceiveName); err != nil {
|
||||||
|
log.Fatal("Invalid git pre-receive hook name (%s): %v", GitHookPrereceiveName, err)
|
||||||
|
}
|
||||||
|
if err := isValidFileName(GitHookUpdateName); err != nil {
|
||||||
|
log.Fatal("Invalid git update hook name (%s): %v", GitHookUpdateName, err)
|
||||||
|
}
|
||||||
|
if err := isValidFileName(GitHookPostreceiveName); err != nil {
|
||||||
|
log.Fatal("Invalid git post-receive hook name (%s): %v", GitHookPostreceiveName, err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user