Skip to content

Commit

Permalink
fix(db): correctly check Git path on case-insensitive file system (#7359
Browse files Browse the repository at this point in the history
)
  • Loading branch information
unknwon committed Feb 18, 2023
1 parent 0f8c71d commit 15d0d6a
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 1 deletion.
1 change: 1 addition & 0 deletions CHANGELOG.md
Expand Up @@ -29,6 +29,7 @@ All notable changes to Gogs are documented in this file.
### Fixed

- _Security:_ Stored XSS for issue assignees. [#7145](https://github.com/gogs/gogs/issues/7145)
- _Security:_ OS Command Injection in repo editor on case-insensitive file systems. [#7030](https://github.com/gogs/gogs/issues/7030)
- Unable to use LDAP authentication on ARM machines. [#6761](https://github.com/gogs/gogs/issues/6761)
- Unable to choose "Lookup Avatar by mail" in user settings without deleting custom avatar. [#7267](https://github.com/gogs/gogs/pull/7267)
- Mistakenly include the "data" directory under the custom directory in the Docker setup. [#7343](https://github.com/gogs/gogs/pull/7343)
Expand Down
3 changes: 3 additions & 0 deletions internal/db/repo_editor.go
Expand Up @@ -485,7 +485,10 @@ type UploadRepoFileOptions struct {

// isRepositoryGitPath returns true if given path is or resides inside ".git"
// path of the repository.
//
// TODO(unknwon): Move to repoutil during refactoring for this file.
func isRepositoryGitPath(path string) bool {
path = strings.ToLower(path)
return strings.HasSuffix(path, ".git") ||
strings.Contains(path, ".git/") ||
strings.Contains(path, `.git\`) ||
Expand Down
9 changes: 8 additions & 1 deletion internal/db/repo_editor_test.go
Expand Up @@ -10,7 +10,7 @@ import (
"github.com/stretchr/testify/assert"
)

func Test_isRepositoryGitPath(t *testing.T) {
func TestIsRepositoryGitPath(t *testing.T) {
tests := []struct {
path string
wantVal bool
Expand All @@ -21,6 +21,13 @@ func Test_isRepositoryGitPath(t *testing.T) {
{path: ".git/hooks", wantVal: true},
{path: "dir/.git", wantVal: true},

// Case-insensitive file system
{path: ".Git", wantVal: true},
{path: "./.Git", wantVal: true},
{path: ".Git/hooks/pre-commit", wantVal: true},
{path: ".Git/hooks", wantVal: true},
{path: "dir/.Git", wantVal: true},

{path: ".gitignore", wantVal: false},
{path: "dir/.gitkeep", wantVal: false},

Expand Down

0 comments on commit 15d0d6a

Please sign in to comment.