| Age | Commit message (Collapse) | Author | Lines |
|
A readme past max-blob-size is never read, which left the about page
with an empty block and no word of why.
|
|
The tag page offered a download for a tag of a tree or a blob, which
only led to a "Not a commit" page. The refs listing already checks.
|
|
A feed path starting with a colon reached git as pathspec magic, so an
unknown magic word ended the request in a 500 and a known one changed
what the path matched, while the log answers both with a 400.
|
|
The idle column falls back on the mtime of the branch's loose ref or of
packed-refs, and a reftable repository has neither, so its cell stayed
empty. Git rewrites reftable/tables.list on every ref update.
|
|
A reftable repository keeps only a placeholder in its HEAD file, so a
dumb clone was told HEAD named refs/heads/.invalid and checked nothing
out. HEAD is now answered the way git's http-backend answers it.
|
|
cgit_parse_url tested ctx.repo where the loop sets repo_end alongside
it, and the log's closing link kept a commit it never read. Clang's
analyzer tripped on both.
|
|
The row stopped at the error and left its cells open, so the rest of
the listing rendered inside it.
|
|
|
|
The index description was cut at a byte count, which could split a
multibyte character and leave an invalid sequence on the page. Commit
subjects already backed up to the start of the character, so html_ntxt
now does that for every caller.
|
|
get-git built whatever the download produced. The tarball is now
checked against the SHA-256 kernel.org publishes before it is unpacked,
so a corrupt or substituted file stops there.
|
|
The sparse rule put git's SPARSE_FLAGS last, and their -std=gnu99
overrode the gnu17 the sources are built as.
|
|
Neither cgit nor the bundled Git reads the macro it defined.
|
|
make -j cgit cgit-nolua ran both sub makes in the one Git tree side by
side, compiling the same objects and archiving libgit.a twice at once.
|
|
Git's Makefile sets CC = cc, which wins over a CC in the environment, so
CC=clang ./tools/release-build.sh probed clang's flags and then built
with cc.
|
|
A Lua build replaces write, and git can write before cmd_main reaches
cgit_init_filters, as it does when GIT_TRACE2 is set, which called
through a null pointer and crashed every request.
|
|
summary-branches, summary-tags and max-ref-count already listed every
ref at 0, but a negative value reached qsort as a count and crashed the
summary and refs pages, and emptied the branch switcher.
|
|
Each row of a followed log moves ctx.qry.vpath to the name its commit
knew the file by, and the pager built its links from that, so past a
rename both links named the old file and led to an empty page.
|
|
A followed log diffs each commit against its parent to learn whether
the file changed there, and a root commit was skipped rather than
diffed against the empty tree, so a file created in the first commit
never showed that commit.
|
|
Tag links carry the tag name as the head, so on any page reached from
an annotated tag the about tab vanished and the about page redirected
to the summary.
|
|
Links built from the repository url, among them the description link
on the index and the Atom and refs links, wrote it as configured, so a
name holding a space, '#' or '?' broke them. The feed link in the page
head did the same with the branch, which turned a '+' into a space.
|
|
Git 2.55 moved object sizes from unsigned long to size_t. The two are
the same type on 64-bit hosts, but not on a 32-bit one, where GCC 14
rejects the mismatched pointers, so cgit stopped compiling there.
|
|
Git's code there needs the kernel headers and its bundled regex, and the
build failed with nothing to say so.
|
|
cgit never shows Git's translations or runs its Tcl tools, yet building
needed libintl and msgfmt for one and, under make test, tclsh for the
other, which a musl system such as Alpine lacks.
|
|
A script raising anything but a string handed die a null to print, and
a Lua state that could not be created was used anyway once the filter
closed.
|
|
A script's top level runs before cgit hooks stdout for it, and the
unhook html() began with tripped an assert that aborted cgit.
|
|
luaossl from release 20260910 and luaposix load under Lua 5.5, and cgit
renders the same pages under it as under LuaJIT. Running the suites
there already caught a write to a for loop's control variable, which
5.5 makes read-only.
|
|
cgit builds against Lua 5.5 and serves the same pages with it, but a
host whose only Lua was 5.5 got a binary without Lua from the search.
|
|
cgit runs as a CGI, so no interpreter outlives its request, and the
lexers load once per process. The loop below already wrote nothing for
an empty blob.
|
|
Scintillua's detect reads the first line as well as the name, and
without it hooks, bin scripts and anything else lacking an extension
stayed plain.
|
|
An unedited copy sent every #123, Closes: and Bug: mark to
bugs.example.com, a link that is wrong for every site.
|
|
|
|
Without the prefix any host under the same domain could set a cgitauth
cookie of its own, signing a visitor in as someone else or out.
|
|
A session stayed good for its whole week after the password changed or
the account went away, which is when ending it matters most.
|
|
Required at the top, a missing luaossl or luaposix failed every request
to the site, public pages included, and each public page paid to load
both.
|
|
The one recipe given, SHA-512 from Debian's mkpasswd, cannot log anyone
in on OpenBSD, whose crypt checks only bcrypt, or on macOS, and
libxcrypt, which most Linux distributions use, recommends yescrypt
instead.
|
|
The fixed SHA-512 stand-in matched only the documented setup, so a site
hashing with yescrypt, other rounds or bcrypt answered for missing and
real names in different times, and on OpenBSD it failed at once.
|
|
SHA-crypt hashes the password in most of its rounds, so the 4 KB that
cgit's POST limit lets through cost about fifteen ordinary logins per
anonymous attempt.
|
|
Splitting the header with patterns that backtrack over spaces cost a
quarter of a second per request at the 8 KB line most web servers
allow, and a second at 16 KB, without any login. auth-file's trim had
the same shape and now reads the cookie as well.
|
|
The 13 pixel icon came out blurred on the high density screens most
phones and laptops have.
|
|
Gravatar's documentation now describes SHA-256 hashes on gravatar.com
alone, and Libravatar has long accepted them beside MD5.
|
|
A screen reader announced the service's name before every author.
|
|
An author email of 16,000 "<" took three quarters of a second per log
row, and one of 64,000 took twelve seconds.
|
|
The require at the top raised as cgit loaded the filter, so every page
that lists an author stopped at its first author cell with an error.
|
|
A line holding a pipe is never blank.
|
|
The footer lost the time it was generated at in 2018, and both runs
come from the same binary, so the two pages have nothing to differ in.
|
|
It was a bare table.list with no name, section or label, the one
listing that broke what the README promises a theme.
|
|
The README promised that t0005 checked them all, while fourteen went
unchecked, and three of its claims were too broad. A date shown in
full carries no age hooks, line anchors follow enable-tree-linenumbers
and cgit.css also styles html.cgit-standalone.
|
|
|
|
|
|
|