From aa24cfb344b1b3eaef7217d996359023cd72ba28 Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Mon, 14 Sep 2026 20:10:01 +0200 Subject: plan 8: fuzz decoders; fold ẞ and invalid UTF-8 correctly, refuse non-UTF-8 paths in krino new MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/design.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'docs/design.md') diff --git a/docs/design.md b/docs/design.md index 411eeba..11e859e 100644 --- a/docs/design.md +++ b/docs/design.md @@ -233,7 +233,8 @@ quantifiers, and inline flags `(?i)` `(?-i)`; no backreferences or lookaround. data and the pattern. `type` is always case-insensitive. A regex can override `case` locally with `(?i)` or `(?-i)`. Folding decomposes letters (Unicode NFD), drops combining marks, and maps the letters that do not -decompose (ł ø đ ħ ß æ œ and their capitals) to ASCII. +decompose (ł ø đ ħ ß æ œ and their capitals, ẞ included) to ASCII. Invalid +UTF-8 is replaced by U+FFFD before folding. ### 5.4 Evaluation @@ -348,7 +349,7 @@ appear in the config. Failures (unreadable, tool missing, timeout) are never cached. - The cache is discarded whole when the extractor fingerprint changes: a tool installed, removed or replaced, or krino's extraction code changing - (`extract.Version`). + (`extract.Version`), or its text normalisation changing (`norm.Version`). - Planning a run (`-n` included) reads the cache and writes it back holding only files still in the directory, under the directory's lock, via a temporary file renamed into place; the directory is 0700, the file 0600. -- cgit v1.3