Skip to content

Commit 5f6c99d

Browse files
author
Gentle
committed
dummy_value now returns error for non-nullable reference types
1 parent 77d8cb5 commit 5f6c99d

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

src/dummy.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,17 @@ pub fn dummy_func(store: &mut crate::Store, ty: FuncType, name: &str) -> Func {
5959

6060
/// Construct a dummy value for the given value type.
6161
#[cfg(fuzzing)]
62-
pub fn dummy_value(val_ty: ValType) -> Val {
63-
match val_ty {
62+
pub fn dummy_value(val_ty: ValType) -> Result<Val> {
63+
Ok(match val_ty {
6464
ValType::I32 => Val::I32(0),
6565
ValType::I64 => Val::I64(0),
6666
ValType::F32 => Val::F32(0),
6767
ValType::F64 => Val::F64(0),
6868
ValType::V128 => Val::V128(0.into()),
6969
ValType::Ref(ref_type) => {
70+
if !ref_type.is_nullable() {
71+
anyhow::bail!("cannot create a dummy value for a non-nullable reference type");
72+
}
7073
if ref_type.matches(&RefType::EXTERNREF) {
7174
Val::ExternRef(None)
7275
} else if ref_type.matches(&RefType::FUNCREF) {
@@ -77,11 +80,14 @@ pub fn dummy_value(val_ty: ValType) -> Val {
7780
panic!("Unknown RefType {:?}", ref_type);
7881
}
7982
}
80-
}
83+
})
8184
}
8285

8386
/// Construct a sequence of dummy values for the given types.
8487
#[cfg(fuzzing)]
8588
pub fn dummy_values(val_tys: impl IntoIterator<Item = ValType>) -> Vec<Val> {
86-
val_tys.into_iter().map(dummy_value).collect()
89+
val_tys
90+
.into_iter()
91+
.filter_map(|ty| dummy_value(ty).ok())
92+
.collect()
8793
}

0 commit comments

Comments
 (0)