Files
werkator/docs/prs
mhoennigandClaude dea6770998 Harden secret-file creation, token comparison and git refname args
Works off the security audit in docs/prs/2026-07-08-PR#000: TODO 1, 8, 9
and 10, the four items that need no design decision.

New `SecretFiles` creates files holding secrets with mode 0600 and their
directories with 0700 *at creation*, as a file attribute, instead of
writing at the umask default and chmod-ing afterwards — that left a
window in which the Gitea token was world-readable, which matters on a
multi-tenant host. It is used by `init` for .git/gittally/.gittally.yml
and by `ControlTokenService` for the control token; the shell setup
script now writes its YAML in a `umask 077` subshell for the same reason.

`ControlTokenService.matches` hashes both sides with SHA-256 before
`MessageDigest.isEqual`, so the comparison always runs over two 32-byte
buffers and cannot return early on a length mismatch.

`GitService.checkout` and `fetchBranch` pass `--` before the refname, so
a branch named like an option cannot be read as one. `resetHardToOrigin`
keeps its plain form: `git reset --hard -- <commit>` is rejected outright
and its argument is already `origin/`-prefixed.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-11 07:09:34 +02:00
..

Pull-Request Documentations in doc/PR

This directory contains documentation for each pull request (PR).

IMPORTANT: The PR-documentation documents the change which was applied in that PR. Such documentation might be outdated right after the next PR was merged. Historic PR-documentation is not maintained along with new PRs.

Naming Convention

YYYY-MM-DD-PR#999-short-description-of-pr

  1. Date of the PR in the format YYYY-MM-DD
  2. followed '-PR#' followed by the number of the pull request in GitEA,
  3. a short description of the PR with dashes between the words,
  4. '.md'

Yes, to get the PR-number, you need to open a pull request first, but initially prefix its title with WIP: to mark it as a work in progress until it is ready for review.

Guidelines

  • Documentations must be written in Markdown format.
  • Use Englisch, it's a public open source project.
  • Use clear and concise language and keep it short.
  • Include relevant details and context, explain the "why".
  • Mark reference to Taiga or any other tool that is not public as "Hostsharing-internal".
  • If necessary, copy important parts of the ticket description.
  • One sentence or statement per line to make diffs easier to read.

Structure

The main (##) sections have to appear in exactly this order, omitting sections which do not apply:

  1. Related Links (optional)
  2. The Problem (required)
  3. Non-Goals (required)
  4. The Scenarios (optional for maintenance or bug fixing PRs, required for features)
  5. The Solution (required)
  6. Open Questions (optional)
  7. Additional Changes (optional)
  8. Prerequisite PRs (optional)
  9. Follow-up PRs (optional)
  10. Attachments (optional)

For details, see template