Skip to content

Commit 67aa99c

Browse files
committed
Avoid recursing into sub-sub-sub-docs folders when looking for READMEs.
Fixes a bug introduced in go-gitea#22177 which allows finding READMEs like docs/docs/docs/.gitea/.github/docs/README.md
1 parent 6976d70 commit 67aa99c

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

routers/web/repo/view.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ const (
5858
// entries == ctx.Repo.Commit.SubTree(ctx.Repo.TreePath).ListEntries()
5959
//
6060
// FIXME: There has to be a more efficient way of doing this
61-
func findReadmeFileInEntries(ctx *context.Context, entries []*git.TreeEntry) (string, *git.TreeEntry, error) {
61+
func findReadmeFileInEntries(ctx *context.Context, entries []*git.TreeEntry, recurse bool) (string, *git.TreeEntry, error) {
6262
// Create a list of extensions in priority order
6363
// 1. Markdown files - with and without localisation - e.g. README.en-us.md or README.md
6464
// 2. Txt files - e.g. README.txt
@@ -115,7 +115,7 @@ func findReadmeFileInEntries(ctx *context.Context, entries []*git.TreeEntry) (st
115115
}
116116
}
117117

118-
if ctx.Repo.TreePath == "" && readmeFile == nil {
118+
if ctx.Repo.TreePath == "" && recurse && readmeFile == nil {
119119
for _, subTreeEntry := range docsEntries {
120120
if subTreeEntry == nil {
121121
continue
@@ -131,7 +131,7 @@ func findReadmeFileInEntries(ctx *context.Context, entries []*git.TreeEntry) (st
131131
return "", nil, err
132132
}
133133

134-
subfolder, readmeFile, err := findReadmeFileInEntries(ctx, childEntries)
134+
subfolder, readmeFile, err := findReadmeFileInEntries(ctx, childEntries, false)
135135
if err != nil && !git.IsErrNotExist(err) {
136136
return "", nil, err
137137
}
@@ -165,7 +165,7 @@ func renderDirectory(ctx *context.Context, treeLink string) {
165165
return
166166
}
167167

168-
subfolder, readmeFile, err := findReadmeFileInEntries(ctx, entries)
168+
subfolder, readmeFile, err := findReadmeFileInEntries(ctx, entries, true)
169169
if err != nil {
170170
ctx.ServerError("findReadmeFileInEntries", err)
171171
return

0 commit comments

Comments
 (0)