зеркало из
https://github.com/glebtv/tui-textarea.git
synced 2026-09-03 14:26:17 +03:00
add insert_delete fuzzing target
Этот коммит содержится в:
@@ -72,6 +72,10 @@ tail -F debug.txt
|
||||
To run fuzzing tests, [cargo-fuzz][] and Rust nightly toolchain are necessary.
|
||||
|
||||
```sh
|
||||
# Show list of fuzzing targets
|
||||
cargo +nightly fuzz list
|
||||
|
||||
# Run 'edit' fuzzing test case
|
||||
cargo +nightly fuzz run edit
|
||||
```
|
||||
|
||||
|
||||
2
fuzz/Cargo.lock
сгенерированный
2
fuzz/Cargo.lock
сгенерированный
@@ -363,7 +363,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tui-textarea"
|
||||
version = "0.2.4"
|
||||
version = "0.3.0"
|
||||
dependencies = [
|
||||
"arbitrary",
|
||||
"crossterm",
|
||||
|
||||
@@ -23,3 +23,9 @@ name = "edit"
|
||||
path = "fuzz_targets/edit.rs"
|
||||
test = false
|
||||
doc = false
|
||||
|
||||
[[bin]]
|
||||
name = "insert_delete"
|
||||
path = "fuzz_targets/insert_delete.rs"
|
||||
test = false
|
||||
doc = false
|
||||
|
||||
26
fuzz/fuzz_targets/insert_delete.rs
Обычный файл
26
fuzz/fuzz_targets/insert_delete.rs
Обычный файл
@@ -0,0 +1,26 @@
|
||||
#![no_main]
|
||||
|
||||
use arbitrary::{Arbitrary as _, Result, Unstructured};
|
||||
use libfuzzer_sys::fuzz_target;
|
||||
use tui_textarea::{CursorMove, TextArea};
|
||||
use tui_textarea_bench::{dummy_terminal, TerminalExt};
|
||||
|
||||
fn fuzz(data: &[u8]) -> Result<()> {
|
||||
let mut term = dummy_terminal();
|
||||
let mut textarea = TextArea::default();
|
||||
let mut data = Unstructured::new(data);
|
||||
for i in 0..100 {
|
||||
textarea.move_cursor(CursorMove::arbitrary(&mut data)?);
|
||||
if i % 2 == 0 {
|
||||
textarea.insert_str(String::arbitrary(&mut data)?);
|
||||
} else {
|
||||
textarea.delete_str(usize::arbitrary(&mut data)?);
|
||||
}
|
||||
term.draw_textarea(&mut textarea);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fuzz_target!(|data: &[u8]| {
|
||||
fuzz(data).unwrap();
|
||||
});
|
||||
Ссылка в новой задаче
Block a user