AgeCommit message (Collapse)AuthorLines
Keep clone files and oversized responses out of the cacheBryce Kwon-0/+43
The dumb transport reads files that already sit on the disk, so a pack copied into a slot cost that disk twice and the request a second write of every byte. A snapshot took a slot whatever its size, so a visitor naming distinct refs and ids could fill the cache root with archives. `cache-max-slot-size`, 64 MB unless set, now serves a larger response from the lock file and drops it, along with any expired copy it would have replaced.
Gate html serving behind trust-scan-configBryce Kwon-3/+39
`enable-html-serving` makes the plain page send a repository file as text/html on the site's own origin, with no nosniff and no policy, so a scanned repository could switch it on from its git config or cgitrc without `trust-scan-config` and run script against every visitor. The warning for a key read from git config also named a null repository, because `repo->path` was set only after that file had been read.
Keep the Lua-less build compilingBryce Kwon-0/+58
`cgit_abort_filters` unhooks the Lua write interposer under NO_LUA too, where neither the hook nor its state exists, so `make NO_LUA=1` and the default mode of `tools/release-build.sh` have not compiled since the die path learned to take stdout back from a filter. The suite now builds that variant into `build/nolua` and runs it, and a `lua:` filter in such a build is refused with a message naming the cause instead of an unknown filter type.
Rename enable-trailers to enable-commit-trailersBryce Kwon-10/+10
Add stable markup hooks for site themesBryce Kwon-16/+115
Align with spaces instead of tabsBryce Kwon-10/+10
Test the hardening passBryce Kwon-30/+501
Harden the request path, scan and error recoveryBryce Kwon-8/+29
Answer 404 for a repository whose path is missingBryce Kwon-2/+21
Name the tagged object under its full idBryce Kwon-13/+15
Gate scanned filters with `trust-scan-filters`Bryce Kwon-12/+30
Map trailer idents and print bare lines as writtenBryce Kwon-5/+17
Apply the mailmap at HEAD to every identBryce Kwon-0/+86
Add the link-trailers extensionBryce Kwon-0/+136
Split trailers out of the commit messageBryce Kwon-0/+91
Lay the tag table out like the commit tableBryce Kwon-0/+46
Settle the snapshot v-prefix from the tag listBryce Kwon-0/+34
`compose_snapshot_prefix` dropped the leading v of a tag only when just one of the names 1.2, v1.2 and V1.2 resolved as a tag, so that the shorter snapshot name could always be traced back to one tag. Those probes went through ref lookups, and on a case-insensitive filesystem a lookup for V1.2 finds the loose file of v1.2, so every freshly made tag counted as ambiguous and kept its v. Once git packed the refs the lookups became exact and the same tag quietly changed its snapshot names. The claimants on a stripped name are now counted over the tag list itself with exact string comparison, so the answer no longer depends on how a ref is stored or on the filesystem underneath. Two tags that really differ only by the letter's case still both keep it.
Clean up the whole treeBryce Kwon-212/+106
Harden the lua filter failure pathsBryce Kwon-0/+22
Refresh the server configs and drop `unsafe-inline`Bryce Kwon-2/+16
The inline handlers and the auto-submitting selects are gone, so `script-src` no longer needs it, and t0004 now checks that the three configs pin the same policy.
Trim the comments and dead code across the treeBryce Kwon-171/+126
Remove the auto-submitting selectsBryce Kwon-4/+4
Extend the html validity checksBryce Kwon-1/+26
Add a consistency test for the config documentsBryce Kwon-0/+54
Report ignored config keys on stderrBryce Kwon-0/+53
Fold `enable-stats` back into `max-stats`Bryce Kwon-7/+6
A `max-stats` period enables the page again, as it did before v2.2.0, so one key does both jobs.
Fold the test readme and ignore rules into the rootBryce Kwon-88/+0
Collect test scratch output under trash and resultsBryce Kwon-15/+33
Add a test suite for the shipped extensionsBryce Kwon-0/+1582
Point clone rows at a url a browser can followBryce Kwon-0/+21
Remove the language breakdown from the stats pageBryce Kwon-14/+9
Keep a detached head in the branch switcherBryce Kwon-0/+20
Add a meta description to the page headBryce Kwon-0/+3
Use registered snapshot MIME typesBryce Kwon-3/+3
Null-terminate the stats pathspec argvBryce Kwon-0/+6
Add a README describing the test suiteBryce Kwon-0/+84
Add tests for the plain page and the atom feedBryce Kwon-0/+116
Slim the serve test to what it actually needsBryce Kwon-3/+7
Rewrite the snapshot test around one helperBryce Kwon-182/+73
Deduplicate the cache test request listsBryce Kwon-48/+25
Prefer POSIX forms throughout the test scriptsBryce Kwon-14/+28
Renumber the test scripts into themed rangesBryce Kwon-3/+7
t000x the ground the suite stands on: git version, html validity, the cache t01xx page content, one script per page t02xx features that cut across pages: filters, submodule links, dates, limits t03xx defence, the security regressions and the $HOME promise t04xx the helper tools under tools/
Resolve submodule links from `.gitmodules`Bryce Kwon-1/+149
Fix the submodule rows in the tree listingBryce Kwon-0/+49
A submodule row linked to a path with its trailing slash stripped, was labelled by its path rather than its entry name, shared the name's element with its hash, claimed a size of zero and offered a blame button that cannot work on a gitlink.
Serve nothing further once a fill is abandonedBryce Kwon-0/+29
Keep error pages out of the cacheBryce Kwon-0/+14
Always send the Status headerBryce Kwon-5/+20
Drop the Last-Modified, Expires and ETag headersBryce Kwon-4/+4
Remove the obsolete summary attributesBryce Kwon-1/+1
Rework the diffstat rows and their summaryBryce Kwon-1/+1