Better errors for empty registry in AnyMap (#2405)
* Better errors for empty registry * Make errors non-panic * clippy
This commit is contained in:
parent
f00470ddaa
commit
713652e5d8
@ -23,6 +23,9 @@ pub type TypeRepr = u128;
|
||||
#[cfg(feature = "stable_anymap")]
|
||||
pub type TypeRepr = Cow<'static, str>;
|
||||
|
||||
/// Error string when no types at all have been registered yet.
|
||||
pub(crate) const ERR_EMPTY_TYPES_REGISTER: &str = "Empty types registry. Please enable the `serdeany_autoreg` feature in libafl_bolts or register all required types manually using RegistryBuilder::register().";
|
||||
|
||||
#[cfg(not(feature = "stable_anymap"))]
|
||||
fn type_repr<T>() -> TypeRepr
|
||||
where
|
||||
@ -121,7 +124,7 @@ pub mod serdeany_registry {
|
||||
hash_map::{Values, ValuesMut},
|
||||
HashMap,
|
||||
};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde::{de, Deserialize, Serialize};
|
||||
|
||||
use crate::{
|
||||
serdeany::{
|
||||
@ -156,9 +159,10 @@ pub mod serdeany_registry {
|
||||
REGISTRY
|
||||
.deserializers
|
||||
.as_ref()
|
||||
.expect("Empty types registry")
|
||||
.ok_or_else(||
|
||||
de::Error::custom(super::ERR_EMPTY_TYPES_REGISTER))?
|
||||
.get(&id)
|
||||
.expect("Cannot deserialize an unregistered type")
|
||||
.ok_or_else(|| de::Error::custom(format_args!("Cannot deserialize the unregistered type with id {id}. Enable the `serde_autoreg` feature in libafl_bolts or register all requried types manually.")))?
|
||||
.0
|
||||
};
|
||||
let seed = DeserializeCallbackSeed::<dyn crate::serdeany::SerdeAny> { cb };
|
||||
@ -365,7 +369,7 @@ pub mod serdeany_registry {
|
||||
REGISTRY
|
||||
.deserializers
|
||||
.as_ref()
|
||||
.expect("Empty types registry")
|
||||
.expect(super::ERR_EMPTY_TYPES_REGISTER)
|
||||
.get(type_repr)
|
||||
.is_some()
|
||||
},
|
||||
@ -628,7 +632,7 @@ pub mod serdeany_registry {
|
||||
REGISTRY
|
||||
.deserializers
|
||||
.as_ref()
|
||||
.expect("Empty types registry")
|
||||
.expect(super::ERR_EMPTY_TYPES_REGISTER)
|
||||
.get(type_repr)
|
||||
.is_some()
|
||||
},
|
||||
|
Loading…
x
Reference in New Issue
Block a user