From 1486b0df1b04adc32e9207b836513226e8015b3e Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Tue, 11 Feb 2025 17:31:30 +0800 Subject: [PATCH] git_misc: Sanitize paths --- git_misc.go | 10 ++++++++++ go.mod | 2 +- go.sum | 4 ++-- diff --git a/git_misc.go b/git_misc.go index a5bcc9e29b09e3bf012d50d73c4aadd73629925e..3aded4fc55499483343235df0b147603ced62e97 100644 --- a/git_misc.go +++ b/git_misc.go @@ -12,7 +12,17 @@ "github.com/go-git/go-git/v5/plumbing/object" "go.lindenii.runxiyu.org/lindenii-common/misc" ) +var err_unsafe_path = errors.New("Unsafe path") + func open_git_repo(group_name, repo_name string) (*git.Repository, error) { + group_name, group_name_ok := misc.Sanitize_path(group_name) + if !group_name_ok { + return nil, err_unsafe_path + } + repo_name, repo_name_ok := misc.Sanitize_path(repo_name) + if !repo_name_ok { + return nil, err_unsafe_path + } return git.PlainOpen(filepath.Join(config.Git.Root, group_name, repo_name+".git")) } diff --git a/go.mod b/go.mod index eb2085ceac140b778888bd2bec3cdae6db133b34..558d57ea54f50800afc73e98bde7918f2dd02d01 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ github.com/alecthomas/chroma/v2 v2.15.0 github.com/go-git/go-git/v5 v5.13.2 github.com/microcosm-cc/bluemonday v1.0.27 github.com/yuin/goldmark v1.7.8 - go.lindenii.runxiyu.org/lindenii-common v0.0.0-20250211092501-f6937cf286bb + go.lindenii.runxiyu.org/lindenii-common v0.0.0-20250211092902-f64ead6a659e ) require ( diff --git a/go.sum b/go.sum index 229d6456ac98d421d8a448dcd49d4a42408c837f..33449a944cb0c049a5771fd4d2b8da829354a8f7 100644 --- a/go.sum +++ b/go.sum @@ -85,8 +85,8 @@ github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/yuin/goldmark v1.7.8 h1:iERMLn0/QJeHFhxSt3p6PeN9mGnvIKSpG9YYorDMnic= github.com/yuin/goldmark v1.7.8/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E= -go.lindenii.runxiyu.org/lindenii-common v0.0.0-20250211092501-f6937cf286bb h1:WGFgTSEFev3Og9osOVUMTe/9GOf43JFiYPuv9Rj+bHE= -go.lindenii.runxiyu.org/lindenii-common v0.0.0-20250211092501-f6937cf286bb/go.mod h1:bOxuuGXA3UpbLb1lKohr2j2MVcGGLcqfAprGx9VCkMA= +go.lindenii.runxiyu.org/lindenii-common v0.0.0-20250211092902-f64ead6a659e h1:Gb58k5z3NjOWdYMBvZaTLG4IWY6HcCVkwPz/J0lFKT0= +go.lindenii.runxiyu.org/lindenii-common v0.0.0-20250211092902-f64ead6a659e/go.mod h1:bOxuuGXA3UpbLb1lKohr2j2MVcGGLcqfAprGx9VCkMA= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= -- 2.48.1