summaryrefslogtreecommitdiffstats
path: root/vendor
diff options
context:
space:
mode:
authorMichael Kuhn <suraia@ikkoku.de>2018-11-28 08:00:25 +0100
committerLauris BH <lauris@nix.lv>2018-11-28 09:00:25 +0200
commit0222623be9fa4a56d870213f77b92139cefc2518 (patch)
treea8a2d69feb72227bf2ee87a9868e75b492190b69 /vendor
parent08bf443016bae30690417b4835076709ef36e3b0 (diff)
downloadgitea-0222623be9fa4a56d870213f77b92139cefc2518.tar.gz
gitea-0222623be9fa4a56d870213f77b92139cefc2518.zip
Explicitly disable Git credential helper (#5367)
* Explicitly disable Git credential helper If the user running Gitea has configured a credential helper, Git credentials might leak out of Gitea. There are two problems with credential helpers when combined with Gitea: 1. Credentials entered by a user when doing a migration or setting up a mirror will end up in the credential store. In the worst case, this is the plain text file ~/.git-credentials. 2. Credentials in the credential store will be used for migrations and mirrors by all users. For example, if user A sets up a mirror, their credentials will be stored. If user B later sets up a mirror from the same host and does not enter any credentials, user A's credentials will be used. This PR prepends -c credential.helper= to all Git commands to clear the list of helpers. This requires at least Git version 2.9, as previous versions will try to load an empty helper instead. For more details, see https://github.com/git/git/commit/24321375cda79f141be72d1a842e930df6f41725 * Update git module
Diffstat (limited to 'vendor')
-rw-r--r--vendor/code.gitea.io/git/command.go5
-rw-r--r--vendor/code.gitea.io/git/repo_tree.go9
-rw-r--r--vendor/code.gitea.io/git/tree.go14
-rw-r--r--vendor/code.gitea.io/git/tree_entry.go15
4 files changed, 37 insertions, 6 deletions
diff --git a/vendor/code.gitea.io/git/command.go b/vendor/code.gitea.io/git/command.go
index 8ca99fd6d3..fc48d2871b 100644
--- a/vendor/code.gitea.io/git/command.go
+++ b/vendor/code.gitea.io/git/command.go
@@ -37,9 +37,12 @@ func (c *Command) String() string {
// NewCommand creates and returns a new Git Command based on given command and arguments.
func NewCommand(args ...string) *Command {
+ // Make an explicit copy of GlobalCommandArgs, otherwise append might overwrite it
+ cargs := make([]string, len(GlobalCommandArgs))
+ copy(cargs, GlobalCommandArgs)
return &Command{
name: "git",
- args: append(GlobalCommandArgs, args...),
+ args: append(cargs, args...),
}
}
diff --git a/vendor/code.gitea.io/git/repo_tree.go b/vendor/code.gitea.io/git/repo_tree.go
index 6e3843f7e5..146b919d7a 100644
--- a/vendor/code.gitea.io/git/repo_tree.go
+++ b/vendor/code.gitea.io/git/repo_tree.go
@@ -18,6 +18,15 @@ func (repo *Repository) getTree(id SHA1) (*Tree, error) {
// GetTree find the tree object in the repository.
func (repo *Repository) GetTree(idStr string) (*Tree, error) {
+ if len(idStr) != 40 {
+ res, err := NewCommand("rev-parse", idStr).RunInDir(repo.Path)
+ if err != nil {
+ return nil, err;
+ }
+ if len(res) > 0 {
+ idStr = res[:len(res)-1]
+ }
+ }
id, err := NewIDFromString(idStr)
if err != nil {
return nil, err
diff --git a/vendor/code.gitea.io/git/tree.go b/vendor/code.gitea.io/git/tree.go
index 4654dac30e..b67bf55840 100644
--- a/vendor/code.gitea.io/git/tree.go
+++ b/vendor/code.gitea.io/git/tree.go
@@ -70,3 +70,17 @@ func (t *Tree) ListEntries() (Entries, error) {
t.entries, err = parseTreeEntries(stdout, t)
return t.entries, err
}
+
+// ListEntriesRecursive returns all entries of current tree recursively including all subtrees
+func (t *Tree) ListEntriesRecursive() (Entries, error) {
+ if t.entriesParsed {
+ return t.entries, nil
+ }
+ stdout, err := NewCommand("ls-tree", "-t", "-r", t.ID.String()).RunInDirBytes(t.repo.Path)
+
+ if err != nil {
+ return nil, err
+ }
+ t.entries, err = parseTreeEntries(stdout, t)
+ return t.entries, err
+}
diff --git a/vendor/code.gitea.io/git/tree_entry.go b/vendor/code.gitea.io/git/tree_entry.go
index 6201eef8fd..ead0d4f5df 100644
--- a/vendor/code.gitea.io/git/tree_entry.go
+++ b/vendor/code.gitea.io/git/tree_entry.go
@@ -18,15 +18,15 @@ type EntryMode int
// one of these.
const (
// EntryModeBlob
- EntryModeBlob EntryMode = 0100644
+ EntryModeBlob EntryMode = 0x0100644
// EntryModeExec
- EntryModeExec EntryMode = 0100755
+ EntryModeExec EntryMode = 0x0100755
// EntryModeSymlink
- EntryModeSymlink EntryMode = 0120000
+ EntryModeSymlink EntryMode = 0x0120000
// EntryModeCommit
- EntryModeCommit EntryMode = 0160000
+ EntryModeCommit EntryMode = 0x0160000
// EntryModeTree
- EntryModeTree EntryMode = 0040000
+ EntryModeTree EntryMode = 0x0040000
)
// TreeEntry the leaf in the git tree
@@ -50,6 +50,11 @@ func (te *TreeEntry) Name() string {
return te.name
}
+// Mode returns the mode of the entry
+func (te *TreeEntry) Mode() EntryMode {
+ return te.mode
+}
+
// Size returns the size of the entry
func (te *TreeEntry) Size() int64 {
if te.IsDir() {