diff options
author | Nick <nick.guenther@polymtl.ca> | 2023-04-10 23:00:19 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-10 23:00:19 -0400 |
commit | ef7fd781f5f5f5812a8a947845afac7a1dba4886 (patch) | |
tree | d8924179d2a1c3e4cd790c51b63cc1410293e978 /routers | |
parent | b7b887ba002e9eccf16a575ce93d91189e6ae4fb (diff) | |
download | gitea-ef7fd781f5f5f5812a8a947845afac7a1dba4886.tar.gz gitea-ef7fd781f5f5f5812a8a947845afac7a1dba4886.zip |
Avoid recursing into sub-sub-sub-docs folders when looking for READMEs. (#23695)
Fixes a bug introduced in https://github.com/go-gitea/gitea/pull/22177
which allows finding READMEs like
docs/docs/docs/.gitea/.github/docs/README.md
Fixes https://github.com/go-gitea/gitea/issues/23694
Diffstat (limited to 'routers')
-rw-r--r-- | routers/web/repo/view.go | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/routers/web/repo/view.go b/routers/web/repo/view.go index 5bf961f412..9cd5fc9e40 100644 --- a/routers/web/repo/view.go +++ b/routers/web/repo/view.go @@ -58,7 +58,7 @@ const ( // entries == ctx.Repo.Commit.SubTree(ctx.Repo.TreePath).ListEntries() // // FIXME: There has to be a more efficient way of doing this -func findReadmeFileInEntries(ctx *context.Context, entries []*git.TreeEntry) (string, *git.TreeEntry, error) { +func findReadmeFileInEntries(ctx *context.Context, entries []*git.TreeEntry, tryWellKnownDirs bool) (string, *git.TreeEntry, error) { // Create a list of extensions in priority order // 1. Markdown files - with and without localisation - e.g. README.en-us.md or README.md // 2. Txt files - e.g. README.txt @@ -69,7 +69,7 @@ func findReadmeFileInEntries(ctx *context.Context, entries []*git.TreeEntry) (st docsEntries := make([]*git.TreeEntry, 3) // (one of docs/, .gitea/ or .github/) for _, entry := range entries { - if entry.IsDir() { + if tryWellKnownDirs && entry.IsDir() { // as a special case for the top-level repo introduction README, // fall back to subfolders, looking for e.g. docs/README.md, .gitea/README.zh-CN.txt, .github/README.txt, ... // (note that docsEntries is ignored unless we are at the root) @@ -130,7 +130,7 @@ func findReadmeFileInEntries(ctx *context.Context, entries []*git.TreeEntry) (st return "", nil, err } - subfolder, readmeFile, err := findReadmeFileInEntries(ctx, childEntries) + subfolder, readmeFile, err := findReadmeFileInEntries(ctx, childEntries, false) if err != nil && !git.IsErrNotExist(err) { return "", nil, err } @@ -164,7 +164,7 @@ func renderDirectory(ctx *context.Context, treeLink string) { return } - subfolder, readmeFile, err := findReadmeFileInEntries(ctx, entries) + subfolder, readmeFile, err := findReadmeFileInEntries(ctx, entries, true) if err != nil { ctx.ServerError("findReadmeFileInEntries", err) return |