TapTap
58a28334b8
fix(utils): bound glob matching and line reads
...
Replace the recursive glob matcher with an iterative O(pattern*string)
dynamic program. The old recursion explored exponentially many paths for
overlapping '*'/'**' wildcards (e.g. '*a*a*...*b' against a long run of
'a'), a CPU DoS reachable from --exclude/--include patterns and
.rsync-filter. A differential fuzz against the original matcher confirms
identical results. Doc: has_path_traversal() is a lexical '..' check only.
Add utils_getdelim_bounded(): a getdelim-style reader that never allocates
beyond UTILS_MAX_LINE_LEN, used to cap untrusted list/filter line reads.
Tests: pathological glob completes quickly; bounded reader returns EFBIG on
an over-long record.
2026-09-14 16:39:10 +02:00
..
2026-09-13 06:59:02 +02:00
2026-09-13 12:57:37 +02:00
2026-09-08 17:25:56 +02:00
2026-09-13 12:19:46 +02:00
2026-09-13 00:59:21 +02:00
2026-06-10 16:58:35 +02:00
2026-09-10 22:05:18 +02:00
2026-09-10 21:40:07 +02:00
2026-09-06 12:34:10 +02:00
2026-09-06 12:34:10 +02:00
2026-09-07 19:50:52 +02:00
2026-09-07 17:42:53 +02:00
2026-09-08 22:53:47 +02:00
2026-06-10 16:58:35 +02:00
2026-09-13 12:57:37 +02:00
2026-07-29 19:19:19 +02:00
2026-09-14 16:39:05 +02:00
2026-07-04 21:25:34 +02:00
2026-09-13 13:27:32 +02:00
2026-06-10 16:58:35 +02:00
2026-09-12 19:29:23 +02:00
2026-09-10 12:50:56 +02:00
2026-09-13 11:11:23 +02:00
2026-09-09 17:48:07 +02:00
2026-09-13 11:11:23 +02:00
2026-09-13 10:23:58 +02:00
2026-07-20 19:42:53 +02:00
2026-07-20 14:44:35 +02:00
2026-09-06 14:19:18 +02:00
2026-09-06 13:20:03 +02:00
2026-09-07 17:42:53 +02:00
2026-07-18 20:00:15 +02:00
2026-09-13 04:52:10 +02:00
2026-09-13 04:16:28 +02:00
2026-08-30 13:50:42 +02:00
2026-07-20 19:42:53 +02:00
2026-09-13 10:06:04 +02:00
2026-09-09 14:23:59 +02:00
2026-09-13 05:24:23 +02:00
2026-07-29 19:19:19 +02:00
2026-09-14 16:39:10 +02:00
2026-07-20 14:44:35 +02:00
2026-09-13 06:24:46 +02:00
2026-09-13 06:24:46 +02:00
2026-09-10 17:49:29 +02:00
2026-09-10 17:13:06 +02:00
2026-09-13 01:44:59 +02:00
2026-07-20 19:42:53 +02:00
2026-09-13 05:24:23 +02:00
2026-07-20 14:44:35 +02:00
2026-09-10 13:52:24 +02:00
2026-09-10 13:52:24 +02:00
2026-09-13 07:20:28 +02:00
2026-07-20 19:42:53 +02:00
2026-09-01 20:46:07 +02:00
2026-07-20 14:44:35 +02:00
2026-09-13 12:40:03 +02:00
2026-09-13 12:19:46 +02:00
2026-09-13 10:42:45 +02:00
2026-07-20 14:44:35 +02:00
2026-08-16 09:37:28 +02:00
2026-06-10 16:58:35 +02:00
2026-09-13 03:46:20 +02:00
2026-09-13 03:29:01 +02:00
2026-09-04 02:25:26 +02:00
2026-07-20 14:44:35 +02:00
2026-09-13 04:06:30 +02:00
2026-07-04 21:25:34 +02:00
2026-09-12 14:54:47 +02:00
2026-09-09 17:48:07 +02:00
2026-09-13 11:56:05 +02:00
2026-07-29 19:19:19 +02:00
2026-09-14 16:39:10 +02:00
2026-06-10 16:58:35 +02:00
2026-09-10 17:39:34 +02:00
2026-09-10 16:27:49 +02:00
2026-08-16 09:37:28 +02:00
2026-07-20 14:44:35 +02:00
2026-09-12 15:01:48 +02:00
2026-07-21 16:55:07 +02:00
2026-09-13 04:18:55 +02:00
2026-07-21 16:55:07 +02:00
2026-09-12 15:01:48 +02:00
2026-07-21 16:55:07 +02:00
2026-09-13 11:11:23 +02:00
2026-09-12 15:03:54 +02:00
2026-09-08 22:27:53 +02:00