Skip to content

Commit 8184513

Browse files
authored
Several improvements from fuzzing: (#323)
- Include a raw Tlv parse (gets coverage of large tags) - Use public accessors rather than internal data
1 parent a8d1478 commit 8184513

File tree

2 files changed

+8
-5
lines changed

2 files changed

+8
-5
lines changed

fuzz/fuzz_targets/fuzz_asn1_parse.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,11 @@ enum Data<'a> {
4646
#[explicit(9)]
4747
SequenceOf(asn1::SequenceOf<'a, i64>),
4848
#[explicit(10)]
49-
Struct(StructData),
49+
Struct(StructData<'a>),
5050
}
5151

5252
#[derive(asn1::Asn1Read, asn1::Asn1Write, PartialEq)]
53-
struct StructData {
53+
struct StructData<'a> {
5454
f1: Option<()>,
5555
f2: asn1::Choice2<bool, i64>,
5656

@@ -70,6 +70,9 @@ struct StructData {
7070
f7: asn1::Implicit<u32, 7>,
7171
#[cfg(feature = "const-generics")]
7272
f8: asn1::Explicit<u32, 8>,
73+
74+
#[explicit(9)]
75+
f9: Option<asn1::Tlv<'a>>,
7376
}
7477

7578
fuzz_target!(|data: &[u8]| {

src/types.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -593,7 +593,7 @@ impl<'a> SimpleAsn1Readable<'a> for BigUint<'a> {
593593
impl<'a> SimpleAsn1Writable for BigUint<'a> {
594594
const TAG: Tag = Tag::primitive(0x02);
595595
fn write_data(&self, dest: &mut WriteBuf) -> WriteResult {
596-
dest.push_slice(self.data)
596+
dest.push_slice(self.as_bytes())
597597
}
598598
}
599599

@@ -630,7 +630,7 @@ impl<'a> SimpleAsn1Readable<'a> for BigInt<'a> {
630630
impl<'a> SimpleAsn1Writable for BigInt<'a> {
631631
const TAG: Tag = Tag::primitive(0x02);
632632
fn write_data(&self, dest: &mut WriteBuf) -> WriteResult {
633-
dest.push_slice(self.data)
633+
dest.push_slice(self.as_bytes())
634634
}
635635
}
636636

@@ -908,7 +908,7 @@ impl SimpleAsn1Writable for Enumerated {
908908
const TAG: Tag = Tag::primitive(0xa);
909909

910910
fn write_data(&self, dest: &mut WriteBuf) -> WriteResult {
911-
u32::write_data(&self.0, dest)
911+
u32::write_data(&self.value(), dest)
912912
}
913913
}
914914

0 commit comments

Comments
 (0)