From b8adfd6a6514c18dd612a1940ad9b2acc98d2ced Mon Sep 17 00:00:00 2001 From: Bryce Kwon Date: Fri, 14 Aug 2026 09:31:16 -1000 Subject: Fix ampersand handling in generated urls --- source/ui-shared.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'source/ui-shared.c') diff --git a/source/ui-shared.c b/source/ui-shared.c index a1538f8..49c9ef0 100644 --- a/source/ui-shared.c +++ b/source/ui-shared.c @@ -795,6 +795,8 @@ char *cgit_fileurl(const char *reponame, const char *pagename, struct strbuf sb = STRBUF_INIT; const char *delim; + // The result is a raw URL, so the query joiner is a bare ampersand + // and each sink escapes the whole string for wherever it lands. if (ctx.cfg.virtual_root) { strbuf_addf(&sb, "%s%s/%s/%s", ctx.cfg.virtual_root, reponame, pagename, (filename ? filename:"")); @@ -802,7 +804,7 @@ char *cgit_fileurl(const char *reponame, const char *pagename, } else { strbuf_addf(&sb, "?url=%s/%s/%s", reponame, pagename, (filename ? filename : "")); - delim = "&"; + delim = "&"; } if (query) strbuf_addf(&sb, "%s%s", delim, query); -- cgit v2.8.0