]> source.dussan.org Git - gitea.git/commitdiff
Fix panic in recursive cache (#16298)
authorzeripath <art27@cantab.net>
Tue, 29 Jun 2021 20:12:43 +0000 (21:12 +0100)
committerGitHub <noreply@github.com>
Tue, 29 Jun 2021 20:12:43 +0000 (16:12 -0400)
There is a bug with last commit cache recursive cache where the last
commit information that refers to the current tree itself will cause a
panic due to its path ("") not being included in the expected tree entry
paths.

This PR fixes this by skipping the missing entry.

Fix #16290

Signed-off-by: Andrew Thornton <art27@cantab.net>
Co-authored-by: 6543 <6543@obermui.de>
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
modules/git/last_commit_cache_nogogit.go

index ff9f9ff1cfadbd4d0a88c246852d33ec5f063f99..faf6e23fa8166cd3b921abca2b3b435ac72ac355 100644 (file)
@@ -94,7 +94,8 @@ func (c *LastCommitCache) recursiveCache(ctx context.Context, commit *Commit, tr
                if err := c.Put(commit.ID.String(), path.Join(treePath, entry), entryCommit.ID.String()); err != nil {
                        return err
                }
-               if entryMap[entry].IsDir() {
+               // entryMap won't contain "" therefore skip this.
+               if treeEntry := entryMap[entry]; treeEntry != nil && treeEntry.IsDir() {
                        subTree, err := tree.SubTree(entry)
                        if err != nil {
                                return err