зеркало из
https://github.com/glebtv/tui-textarea.git
synced 2026-09-07 07:55:50 +03:00
add insert_delete fuzzing target
Этот коммит содержится в:
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