aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2019-05-20 21:45:12 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2019-05-20 21:52:38 +0200
commit8cb23b9c263075dc5db7c5e9e0c267a7d16ddd70 (patch)
tree0991abc6649827b69554162f55b99be736b5adbc
parenthtml: double escape literal + in URLs (diff)
downloadcgit-jd/zx2c4-deployment.tar.xz
cgit-jd/zx2c4-deployment.zip
ui-shared: restrict to 15 levelsjd/zx2c4-deployment
Perhaps a more ideal version of this would be to not print breadcrumbs at all for paths that don't exist in the given repo at the given oid. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Reported-by: Fydor Wire Snark <wsnark@tuta.io>
-rw-r--r--ui-shared.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/ui-shared.c b/ui-shared.c
index d27a5fd..d2358f2 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -945,12 +945,13 @@ static void cgit_print_path_crumbs(char *path)
{
char *old_path = ctx.qry.path;
char *p = path, *q, *end = path + strlen(path);
+ int levels = 0;
ctx.qry.path = NULL;
cgit_self_link("root", NULL, NULL);
ctx.qry.path = p = path;
while (p < end) {
- if (!(q = strchr(p, '/')))
+ if (!(q = strchr(p, '/')) || levels > 15)
q = end;
*q = '\0';
html_txt("/");
@@ -958,6 +959,7 @@ static void cgit_print_path_crumbs(char *path)
if (q < end)
*q = '/';
p = q + 1;
+ ++levels;
}
ctx.qry.path = old_path;
}