ui-shared: restrict to 15 levels

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>
This commit is contained in:
Jason A. Donenfeld 2019-05-20 21:45:12 +02:00
parent bd0293f570
commit 54c407a74a

View File

@ -945,12 +945,13 @@ static void cgit_print_path_crumbs(char *path)
{ {
char *old_path = ctx.qry.path; char *old_path = ctx.qry.path;
char *p = path, *q, *end = path + strlen(path); char *p = path, *q, *end = path + strlen(path);
int levels = 0;
ctx.qry.path = NULL; ctx.qry.path = NULL;
cgit_self_link("root", NULL, NULL); cgit_self_link("root", NULL, NULL);
ctx.qry.path = p = path; ctx.qry.path = p = path;
while (p < end) { while (p < end) {
if (!(q = strchr(p, '/'))) if (!(q = strchr(p, '/')) || levels > 15)
q = end; q = end;
*q = '\0'; *q = '\0';
html_txt("/"); html_txt("/");
@ -958,6 +959,7 @@ static void cgit_print_path_crumbs(char *path)
if (q < end) if (q < end)
*q = '/'; *q = '/';
p = q + 1; p = q + 1;
++levels;
} }
ctx.qry.path = old_path; ctx.qry.path = old_path;
} }