Skip to content

Commit 31c92ad

Browse files
authored
test(fuzz): read -> write bson (#500)
1 parent 401f638 commit 31c92ad

File tree

5 files changed

+30
-6
lines changed

5 files changed

+30
-6
lines changed

fuzz/Cargo.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,8 @@ path = "fuzz_targets/iterate.rs"
2727

2828
[[bin]]
2929
name = "raw_deserialize"
30-
path = "fuzz_targets/raw_deserialize.rs"
30+
path = "fuzz_targets/raw_deserialize.rs"
31+
32+
[[bin]]
33+
name = "raw_deserialize_utf8_lossy"
34+
path = "fuzz_targets/raw_deserialize_utf8_lossy.rs"

fuzz/fuzz_targets/deserialize.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
#![no_main]
2-
#[macro_use] extern crate libfuzzer_sys;
2+
#[macro_use]
3+
extern crate libfuzzer_sys;
34
extern crate bson;
45

56
use bson::Document;
67
use std::io::Cursor;
78

89
fuzz_target!(|buf: &[u8]| {
9-
let _ = Document::from_reader(&mut Cursor::new(&buf[..]));
10+
if let Ok(doc) = Document::from_reader(&mut Cursor::new(&buf[..])) {
11+
let mut vec = Vec::with_capacity(buf.len());
12+
let _ = doc.to_writer(&mut vec);
13+
}
1014
});

fuzz/fuzz_targets/iterate.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#![no_main]
2-
#[macro_use] extern crate libfuzzer_sys;
2+
#[macro_use]
3+
extern crate libfuzzer_sys;
34
extern crate bson;
45
use bson::RawDocument;
56

fuzz/fuzz_targets/raw_deserialize.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
#![no_main]
2-
#[macro_use] extern crate libfuzzer_sys;
2+
#[macro_use]
3+
extern crate libfuzzer_sys;
34
extern crate bson;
45
use bson::Document;
56

67
fuzz_target!(|buf: &[u8]| {
7-
let _ = bson::from_slice::<Document>(buf);
8+
if let Ok(doc) = bson::from_slice::<Document>(buf) {
9+
let mut vec = Vec::with_capacity(buf.len());
10+
let _ = doc.to_writer(&mut vec);
11+
}
812
});
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#![no_main]
2+
#[macro_use] extern crate libfuzzer_sys;
3+
extern crate bson;
4+
use bson::Document;
5+
6+
fuzz_target!(|buf: &[u8]| {
7+
if let Ok(doc) = bson::from_slice_utf8_lossy::<Document>(buf) {
8+
let mut vec = Vec::with_capacity(buf.len());
9+
let _ = doc.to_writer(&mut vec);
10+
}
11+
});

0 commit comments

Comments
 (0)