Avatar for the ada-url user
ada-url
ada
BlogDocsChangelog

Enforce max input length to the Ada URL parser

#1126Merged
Comparing
control_url_size
(
6f1efaa
) with
main
(
67b4245
)
CodSpeed Performance Gauge
-1%
Untouched
27
Skipped
4

Benchmarks

31 total
BBC_BasicBench_AdaURL_CanParse
unknown_file
CodSpeed Performance Gauge
0%
3.4 µs3.4 µs
BenchData_BasicBench_AdaURL_CanParse
unknown_file
CodSpeed Performance Gauge
0%
21.7 ms21.7 ms
BasicBench_AdaURL_URLPattern_Parse
benchmarks/urlpattern.cpp
CodSpeed Performance Gauge
0%
592.5 µs592.2 µs
BBC_BasicBench_whatwg
unknown_file
CodSpeed Performance Gauge
0%
26.8 µs26.8 µs
Bench_BasicBench_whatwg
unknown_file
CodSpeed Performance Gauge
0%
31.9 µs31.9 µs
BenchData_BasicBench_whatwg
unknown_file
CodSpeed Performance Gauge
0%
213.7 ms213.7 ms
BasicBench_AdaURL_URLPattern_Test
benchmarks/urlpattern.cpp
CodSpeed Performance Gauge
0%
52.2 µs52.2 µs
url_search_params_AdaURL
benchmarks/bench_search_params.cpp
CodSpeed Performance Gauge
0%
195.9 µs196.3 µs
BasicBench_AdaURL_URLPattern_Exec
benchmarks/urlpattern.cpp
CodSpeed Performance Gauge
0%
75.6 µs75.8 µs
Bench_IPv4_NonDecimal_Aggregator
benchmarks/bench_ipv4.cpp
CodSpeed Performance Gauge
0%
5.1 ms5.1 ms
Bench_IPv4_NonDecimal_AdaURL
benchmarks/bench_ipv4.cpp
CodSpeed Performance Gauge
-1%
4.3 ms4.4 ms
Bench_BasicBench_AdaURL_aggregator_href
unknown_file
CodSpeed Performance Gauge
-1%
24.1 µs24.3 µs
Bench_BasicBench_AdaURL_CanParse
unknown_file
CodSpeed Performance Gauge
-1%
13.4 µs13.5 µs
Bench_IPv4_Decimal_AdaURL
benchmarks/bench_ipv4.cpp
CodSpeed Performance Gauge
-1%
2.5 ms2.6 ms
Bench_DNS_Aggregator
benchmarks/bench_ipv4.cpp
CodSpeed Performance Gauge
-1%
93.1 ms93.8 ms
Bench_IPv4_Decimal_Aggregator
benchmarks/bench_ipv4.cpp
CodSpeed Performance Gauge
-1%
3.2 ms3.2 ms
BenchData_BasicBench_AdaURL_aggregator_href
unknown_file
CodSpeed Performance Gauge
-1%
92.1 ms92.8 ms
Bench_BasicBench_AdaURL_href
unknown_file
CodSpeed Performance Gauge
-1%
32.2 µs32.6 µs
BBC_BasicBench_AdaURL_aggregator_href
unknown_file
CodSpeed Performance Gauge
-1%
15.8 µs16 µs
BBC_BasicBench_AdaURL_href
unknown_file
CodSpeed Performance Gauge
-1%
23.6 µs23.9 µs
BenchData_BasicBench_AdaURL_href
unknown_file
CodSpeed Performance Gauge
-2%
132.3 ms134.3 ms
UserInfo
benchmarks/percent_encode.cpp
CodSpeed Performance Gauge
-2%
4.2 µs4.3 µs
Bench_DNS_AdaURL
benchmarks/bench_ipv4.cpp
CodSpeed Performance Gauge
-2%
98 ms100.1 ms
SpecialQuery
benchmarks/percent_encode.cpp
CodSpeed Performance Gauge
-3%
3.3 µs3.3 µs
Query
benchmarks/percent_encode.cpp
CodSpeed Performance Gauge
-3%
3.3 µs3.3 µs

Commits

Click on a commit to change the comparison range
Base
main
67b4245
-0.87%
This commit introduces max input length controls to the Ada URL parser library, adding ada::set_max_input_length() and ada::get_max_input_length() functions for configurable limits (defaulting to 4GB) to prevent DoS attacks and excessive memory usage. Key changes include a new get_href_size() method for efficient size calculation without allocation, enforcement checks in all parsers and setters with automatic reversion on limit exceedance, and comprehensive tests including unit tests in max_input_length.cpp and a fuzzing simulation in max_length_fuzzer.cpp. The implementation uses thread-safe atomics, preserves ABI compatibility by only adding new functions, and covers edge cases like percent-encoding expansion and cumulative setter operations.
43863ff
17 days ago
by lemire
0%
lint
4951691
17 days ago
by lemire
-3.63%
various fixes
2b7a1ff
17 days ago
by lemire
0%
lint
b1696a6
17 days ago
by lemire
-0.77%
saving a load
f5e49b0
17 days ago
by lemire
+4.36%
tuning
5763846
17 days ago
by lemire
-0.01%
lint/clean
6f1efaa
15 days ago
by lemire
© 2026 CodSpeed Technology
Home Terms Privacy Docs