all repos — cgit @ 86e309fcb5ba64d29821b1e40407a4007e34df75

a hyperfast web frontend for git written in c

Fix section-from-path > 1

When having found the first path separator occurrence at position i, we
invoked strchr() on the same position i in subsequent iterations
resulting in the same path separator being returned by strchr() over and
over again. Increase the position by one to skip the occurrence that has
just been found and advance to the next separator.

Reported-by: Konstantin Ryabitsev <mricon@kernel.org>
Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
Lukas Fleischer cgit@cryptocrack.de
Fri, 28 Jun 2013 08:58:14 +0000
commit

86e309fcb5ba64d29821b1e40407a4007e34df75

parent

1a194aa2c79aa9514b4a2a302b05ba641811fc9f

1 files changed, 4 insertions(+), 4 deletions(-)

jump to
M scan-tree.cscan-tree.c

@@ -148,14 +148,14 @@ strbuf_setlen(path, pathlen);

} if (ctx.cfg.section_from_path) { - n = ctx.cfg.section_from_path; + n = ctx.cfg.section_from_path; if (n > 0) { - slash = rel.buf; - while (slash && n && (slash = strchr(slash, '/'))) + slash = rel.buf - 1; + while (slash && n && (slash = strchr(slash + 1, '/'))) n--; } else { slash = rel.buf + rel.len; - while (slash && n && (slash = xstrrchr(rel.buf, slash, '/'))) + while (slash && n && (slash = xstrrchr(rel.buf, slash - 1, '/'))) n++; } if (slash && !n) {