| Age | Commit message (Collapse) | Author | Lines |
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1456483 gated the key and named it under trust-scan-config, but this
section kept the list from before.
|
|
|
|
|
|
|
|
The manual has named the commit page since it was written in 2008, a
year after the index started linking the log instead.
|
|
A readme's links to its own sections, as in a table of contents, had
nothing on the page to land on.
|
|
|
|
Decoding them here instead would mean carrying every named reference
HTML defines, while the browser already knows them all.
|
|
|
|
|
|
The item's second line became a paragraph of its own and the items
after it a new list, so an ordered list started counting again.
|
|
A table written right under a line of text came out as more of the
paragraph, pipes and all.
|
|
GitHub shows a single newline in a markdown file as a space, and roff
fills the lines of a man page the same way, so text wrapped in the
source came out ragged on the about page.
|
|
A relative image loaded from below the about page, which answers 404
now, and a remote one had every visitor's browser call a third party.
A badge also came out as a link to its own image, wrapped in stray
brackets.
|
|
A browser resolved them against the about page, where nothing lives
now that the page answers 404 below itself. They resolve the way
GitHub resolves a readme's links instead, from the readme's directory
and on the branch it was read from.
|
|
The heading pattern backtracked over a run of spaces in cubic time and
the cell trim in quadratic time, so one crafted line in a readme could
hold a request for half an hour, well inside the size cap. The heading
rule now also keeps a sharp that ends a word, as in "# C#".
|
|
With nothing below the about page, a readme's relative links have to be
written against the tree, and only cgit knows how this site spells the
url of a tree page and which ref the readme was read from. Both reach
the filter already escaped for a url, built by the same writer as
cgit's own links.
|
|
The about page served every file beside the readme as a page of its
own, through the about filter, and answered 200 for directories and
missing files alike. Images it passed through came from the root of the
default branch whatever the readme's own directory and ref. A readme on
disk exposed its whole directory this way.
|
|
The hook forced a 022 umask, so in a repository shared with a group the
first pusher owned info/web and every other member's push failed to
write the age file there.
|
|
Only the exit status was hidden, so a pusher without write access to
the cache root saw a permission error per cached page, against what
the hook's own comment promised.
|
|
The trim pattern backtracked over a run of spaces inside an address,
which a commit can carry, and a log page runs the filter for every row.
Forty thousand spaces took two seconds per row.
|
|
A repos file the filter could not open read as listing nothing, so a
permission slip or a mistyped path made every protected repository
public. A line naming a repository with no groups was skipped the same
way, where auth-inline's empty list denies everyone.
|
|
|
|
|
|
Five copies of the test and four of the error page had to agree by
hand. The new check pins the four refusals, which no test covered.
|
|
With these and the two changes before them, cgit builds under git's
DEVELOPER=1 settings, which also annotate their own callbacks this way.
|
|
ISO C has no conversion between a function pointer and void *, so the
callbacks handed through git's data pointers and the write found by
dlsym stopped the pedantic half of a DEVELOPER=1 build.
|
|
Git's DEVELOPER=1 build turns on -Wwrite-strings as an error, and the
literals stored through plain char pointers failed cgit's own objects
there. The exec filter's argv takes the cast execvp needs once, the
way git's run-command does.
|
|
|