build.sh builds the Rust targets with the Go-era names, refuses an OUT that is /, $HOME or the tree, checks static linking and names the Go targets Rust cannot build. packaging/package.sh builds and inspects packages without signing or publishing; repo.sh reuses it. Seven fuzz targets (one found a URL-parser panic, fixed here with a regression test), cargo-deny policy, CI for lint, tests on Linux/macOS/Windows, cross builds with qemu runs, supply chain and fuzzing. Compatibility specification and security notes. Co-Authored-By: Claude <noreply@anthropic.com>
16 lines
639 B
Rust
16 lines
639 B
Rust
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
//! The mirror's HTML and CSS rewriters never panic, and rewriting nothing
|
|
//! returns the input byte for byte.
|
|
#![no_main]
|
|
use vault::net::html;
|
|
|
|
libfuzzer_sys::fuzz_target!(|data: &[u8]| {
|
|
let _ = html::tokenize(data);
|
|
assert_eq!(html::rewrite_html(data, &mut |_| None, &mut |_| None), data);
|
|
assert_eq!(html::rewrite_css(data, false, &mut |_| None), data);
|
|
let _ = html::rewrite_html(data, &mut |_| None, &mut |u| Some(format!("x/{}", u.len())));
|
|
if let Ok(s) = std::str::from_utf8(data) {
|
|
let _ = vault::net::Url::parse(s).map(|u| u.join("../a?b#c"));
|
|
}
|
|
});
|