fix: Handle undefined CBOR maps in Plutus data (#196)
This commit is contained in:
parent
2a176723bf
commit
7a73ebc5b2
3 changed files with 12 additions and 3 deletions
|
|
@ -946,7 +946,9 @@ impl<'b, C> minicbor::decode::Decode<'b, C> for PlutusData {
|
|||
| minicbor::data::Type::I16
|
||||
| minicbor::data::Type::I32
|
||||
| minicbor::data::Type::I64 => Ok(Self::BigInt(d.decode_with(ctx)?)),
|
||||
minicbor::data::Type::Map => Ok(Self::Map(d.decode_with(ctx)?)),
|
||||
minicbor::data::Type::Map | minicbor::data::Type::MapIndef => {
|
||||
Ok(Self::Map(d.decode_with(ctx)?))
|
||||
}
|
||||
minicbor::data::Type::Bytes => Ok(Self::BoundedBytes(d.decode_with(ctx)?)),
|
||||
minicbor::data::Type::BytesIndef => {
|
||||
let mut full = Vec::new();
|
||||
|
|
@ -1219,8 +1221,12 @@ impl<'b, C> minicbor::Decode<'b, C> for Metadatum {
|
|||
}
|
||||
minicbor::data::Type::Bytes => Ok(Metadatum::Bytes(d.decode_with(ctx)?)),
|
||||
minicbor::data::Type::String => Ok(Metadatum::Text(d.decode_with(ctx)?)),
|
||||
minicbor::data::Type::Array => Ok(Metadatum::Array(d.decode_with(ctx)?)),
|
||||
minicbor::data::Type::Map => Ok(Metadatum::Map(d.decode_with(ctx)?)),
|
||||
minicbor::data::Type::Array | minicbor::data::Type::ArrayIndef => {
|
||||
Ok(Metadatum::Array(d.decode_with(ctx)?))
|
||||
}
|
||||
minicbor::data::Type::Map | minicbor::data::Type::MapIndef => {
|
||||
Ok(Metadatum::Map(d.decode_with(ctx)?))
|
||||
}
|
||||
_ => Err(minicbor::decode::Error::message(
|
||||
"Can't turn data type into metadatum",
|
||||
)),
|
||||
|
|
|
|||
|
|
@ -597,6 +597,8 @@ mod tests {
|
|||
include_str!("../../../test_data/babbage4.block"),
|
||||
// peculiar block with i32 overlfow
|
||||
include_str!("../../../test_data/babbage5.block"),
|
||||
// peculiar block with map undef in plutus data
|
||||
include_str!("../../../test_data/babbage6.block"),
|
||||
];
|
||||
|
||||
for (idx, block_str) in test_blocks.iter().enumerate() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue