aboutsummaryrefslogtreecommitdiff
path: root/models/repo_editor.go
diff options
context:
space:
mode:
authorUnknwon <u@gogs.io>2018-12-25 10:01:52 -0500
committerUnknwon <u@gogs.io>2018-12-25 10:01:52 -0500
commit9b37b1569c2d466dc8293ed482c1549aa9a6d4a9 (patch)
tree4d0ca462b5be5e986c8051cc280fb9a8c08ee7d2 /models/repo_editor.go
parent5f1f1bb5ed3c9916f11016942b9f553ef4fb72a9 (diff)
models/repo_editor: add isRepositoryGitPath to detect invalid file path (#5558)
Diffstat (limited to 'models/repo_editor.go')
-rw-r--r--models/repo_editor.go7
1 files changed, 6 insertions, 1 deletions
diff --git a/models/repo_editor.go b/models/repo_editor.go
index 62914c6d..bb4b6300 100644
--- a/models/repo_editor.go
+++ b/models/repo_editor.go
@@ -443,6 +443,11 @@ type UploadRepoFileOptions struct {
Files []string // In UUID format
}
+// isRepositoryGitPath returns true if given path is or resides inside ".git" path of the repository.
+func isRepositoryGitPath(path string) bool {
+ return strings.HasSuffix(path, ".git") || strings.Contains(path, ".git"+string(os.PathSeparator))
+}
+
func (repo *Repository) UploadRepoFiles(doer *User, opts UploadRepoFileOptions) (err error) {
if len(opts.Files) == 0 {
return nil
@@ -480,7 +485,7 @@ func (repo *Repository) UploadRepoFiles(doer *User, opts UploadRepoFileOptions)
}
// Prevent copying files into .git directory, see https://github.com/gogs/gogs/issues/5558.
- if strings.HasPrefix(upload.Name, ".git/") {
+ if isRepositoryGitPath(upload.Name) {
continue
}