Niels Lohmann
467670aa7a
Test that the contiguous fast paths never read outside the input
...
The bulk string scanner, the SWAR searches, the UTF-8 prefix validator,
the 8-digit number loop, the 8-byte indentation skip, and the BSON/BON8
bulk string readers load several bytes at a time from contiguous input.
ASan misses over-reads into the slack of the same heap allocation, and
fuzzers rarely end an input exactly at a page boundary.
The new test copies each input directly in front of, and directly
behind, an inaccessible page (mmap/mprotect on POSIX,
VirtualAlloc/VirtualProtect on Windows), so reading even one byte
outside the input crashes. It covers the string-scan functions directly
and json::parse, accept, sax_parse (with and without comments) and all
binary readers through the public API, with inputs ending at every byte
of strings, escapes, UTF-8 sequences, numbers, literals, indentation
runs, and binary documents. Each result must match parsing the same
input from a std::string.
Signed-off-by: Niels Lohmann <mail@nlohmann.me >
2026-10-14 16:24:28 +02:00
..
2026-10-11 08:24:31 +02:00
2026-10-11 08:24:31 +02:00
2026-10-11 08:21:13 +02:00
2026-01-01 20:00:39 +01:00
2026-10-11 08:21:13 +02:00
2026-10-11 08:21:13 +02:00
2026-10-11 08:21:13 +02:00
2026-10-11 08:21:13 +02:00
2026-10-11 08:21:13 +02:00
2026-10-11 08:21:13 +02:00
2026-10-11 08:21:13 +02:00
2026-01-01 20:00:39 +01:00
2026-10-01 07:33:07 +02:00
2026-10-01 07:33:07 +02:00
2026-10-11 08:21:13 +02:00
2026-09-16 20:15:46 +02:00
2026-10-06 22:53:03 +02:00
2026-10-01 07:33:07 +02:00
2026-07-08 16:40:58 +02:00
2026-10-08 16:11:16 +02:00
2026-10-06 22:33:29 +02:00
2026-10-01 07:37:47 +02:00
2026-10-08 16:11:16 +02:00
2026-10-09 17:05:36 +02:00
2026-10-04 17:18:19 +02:00
2026-10-01 07:37:47 +02:00
2026-10-07 19:17:18 +02:00
2026-10-11 08:22:00 +02:00
2026-10-07 07:39:05 +02:00
2026-10-09 16:56:14 +02:00
2026-09-16 20:15:46 +02:00
2026-10-01 07:37:47 +02:00
2026-10-10 00:05:02 +02:00
2026-09-27 14:19:22 +02:00
2026-01-01 20:00:39 +01:00
2026-10-13 17:16:52 +02:00
2026-10-11 08:21:13 +02:00
2026-10-08 16:11:16 +02:00
2026-01-01 20:00:39 +01:00
2026-09-30 20:07:52 +02:00
2026-10-02 11:23:55 +02:00
2026-09-11 08:22:50 +02:00
2026-10-04 17:18:19 +02:00
2026-10-06 07:22:55 +02:00
2026-10-08 16:11:16 +02:00
2026-10-09 16:56:14 +02:00
2026-10-13 17:16:52 +02:00
2026-10-11 08:24:31 +02:00
2026-10-11 08:24:31 +02:00
2026-10-11 08:24:31 +02:00
2026-10-11 08:24:31 +02:00
2026-10-11 08:24:31 +02:00
2026-10-10 00:05:02 +02:00
2026-10-08 16:11:16 +02:00
2026-10-06 07:22:55 +02:00
2026-10-13 17:16:52 +02:00
2026-09-30 21:36:04 +02:00
2026-10-07 16:37:19 +02:00
2026-10-12 09:33:43 +02:00
2026-09-30 20:53:56 +02:00
2026-10-04 17:18:19 +02:00
2026-09-30 20:07:06 +02:00
2026-10-11 08:21:41 +02:00
2026-10-04 17:54:05 +02:00
2026-10-04 17:54:05 +02:00
2026-09-27 16:56:21 +02:00
2026-07-02 15:59:36 +02:00
2026-10-14 16:24:28 +02:00
2026-10-08 16:11:16 +02:00
2026-01-01 20:00:39 +01:00
2026-09-09 09:52:58 +02:00
2026-10-04 22:11:34 +02:00
2026-01-01 20:00:39 +01:00
2026-10-01 07:33:07 +02:00
2026-01-01 20:00:39 +01:00
2026-10-11 08:21:41 +02:00
2026-10-11 08:21:41 +02:00
2026-10-11 10:27:16 +02:00
2026-10-08 16:11:16 +02:00
2026-10-12 09:33:43 +02:00
2026-10-01 07:37:47 +02:00
2026-01-01 20:00:39 +01:00
2026-10-04 17:18:19 +02:00
2026-10-06 22:53:03 +02:00
2026-10-10 00:05:02 +02:00
2026-09-30 20:08:17 +02:00
2026-09-16 20:15:46 +02:00
2026-09-09 09:48:17 +02:00
2026-09-16 20:15:46 +02:00
2026-10-02 17:25:17 +02:00
2026-10-09 16:56:14 +02:00
2026-10-04 11:46:25 +02:00
2026-10-04 17:18:19 +02:00
2026-10-02 11:23:55 +02:00
2026-10-01 07:37:47 +02:00
2026-10-01 07:33:07 +02:00
2026-01-01 20:00:39 +01:00
2026-10-08 16:11:16 +02:00
2026-10-08 16:11:16 +02:00
2026-10-13 17:16:52 +02:00
2026-10-08 16:11:16 +02:00
2026-09-27 14:19:22 +02:00
2026-01-01 20:00:39 +01:00
2026-01-01 20:00:39 +01:00
2026-10-04 11:50:42 +02:00
2026-10-07 08:50:12 +02:00
2026-01-01 20:00:39 +01:00
2026-09-25 20:44:30 +02:00
2026-10-06 22:33:29 +02:00
2026-10-07 19:17:57 +02:00
2026-10-01 07:37:47 +02:00
2026-01-01 20:00:39 +01:00
2026-10-04 17:18:19 +02:00
2026-09-30 22:49:24 +02:00
2026-10-01 07:37:47 +02:00