From b5e011a14a6092fe74d8e31806cfa7fd45fb6d14 Mon Sep 17 00:00:00 2001 From: Bryce Kwon Date: Sat, 17 Oct 2026 17:09:15 -1000 Subject: Hold a scanned defbranch to a ref name The index stats the default branch below the repository to date it, and a scanned repository sets its own defbranch, which was not held to what a ref may hold, so one spelled as a path reached a file outside. --- source/ui-repolist.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'source/ui-repolist.c') diff --git a/source/ui-repolist.c b/source/ui-repolist.c index 24d5479..58e31ed 100644 --- a/source/ui-repolist.c +++ b/source/ui-repolist.c @@ -56,8 +56,10 @@ static const char *tip_branch(const struct cgit_repo *repo, struct strbuf *head) struct strbuf path = STRBUF_INIT; const char *branch = repo->defbranch; + // A scanned repository sets its own defbranch, which is stat'ed below + // the repository, so it is held to what a ref name may hold. if (branch) - return branch; + return check_refname_format(branch, REFNAME_ALLOW_ONELEVEL) ? "master" : branch; strbuf_addf(&path, "%s/HEAD", repo->path); if (strbuf_read_file(head, path.buf, 0) > 0) { -- cgit