From 75f30a34b28c2f4e89e158837232e5fa45bb480e Mon Sep 17 00:00:00 2001 From: clawbot <35+clawbot@noreply.example.org> Date: Thu, 12 Nov 2026 03:43:51 +0100 Subject: [PATCH] Core Rule Set: a repository's name passes in the adopt form's id (closes #365) While bodies are read, the forms that adopt or delete an unadopted repository were refused when the repository's name held a command, a system file's name or a shell path, such as alice/python3-app, alice/.profile or robin/assets. id there now skips 930120, 932120, 932160 and 932260. The paths are gitea's /-/admin/repos/unadopted, Forgejo's /admin/repos/unadopted, and /user/settings/repos/unadopted, which both serve. Model: opus-5-5 --- README.md | 4 +- SPEC.md | 15 ++++-- internal/coreruleset/gitea.conf | 27 +++++++++-- internal/coreruleset/gitea_test.go | 74 ++++++++++++++++++++++++++++-- 4 files changed, 108 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 8d0ed3d..d65f670 100644 --- a/README.md +++ b/README.md @@ -589,8 +589,8 @@ client's limits by tag. See "Request tags" in [`SPEC.md`](SPEC.md). - Each supported app also has its own fixes, which let its ordinary requests through. Its recorded ordinary requests pass the Core Rule Set at the default settings. The supported apps, by their names in `SWW_APPS`, are: - - `gitea`, whose fixes let its container registry, searches, file names and - branch names through; + - `gitea`, whose fixes let its container registry, searches, file names, + branch names and repository names through; - `forgejo`, a fork of gitea, which gets gitea's fixes too, and whose own fixes let its searches through; - `wordpress`, whose fixes let through its searches, its names, its file diff --git a/SPEC.md b/SPEC.md index 8f52ea9..ea7f891 100644 --- a/SPEC.md +++ b/SPEC.md @@ -826,9 +826,9 @@ one entry of `apps` in `internal/coreruleset/coreruleset.go`. gitea's fixes are: with any script removed and returns only to its own pages. Every other cookie is read in full. 3. On gitea's paths, some fields skip the rules that refused ordinary gitea - requests there. They are the fields where gitea sends a search, a file name - or a branch name. `internal/coreruleset/gitea.conf` lists each rule and the - request it refused. The fields are: + requests there. They are the fields where gitea sends a search, a file name, + a branch name or a repository's name. `internal/coreruleset/gitea.conf` lists + each rule and the request it refused. The fields are: - `q` on gitea's searches of code, of issues and pull requests, and of commits. A code search holds code, such as `