Skip to content

Commit

Permalink
fix(primitives): Handle generic int in Plutus data (#202)
Browse files Browse the repository at this point in the history
  • Loading branch information
scarmuega committed Nov 14, 2022
1 parent 4f9fc1e commit 4bb755d
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 2 deletions.
6 changes: 4 additions & 2 deletions pallas-primitives/src/alonzo/model.rs
Original file line number Diff line number Diff line change
Expand Up @@ -866,7 +866,8 @@ impl<'b, C> minicbor::decode::Decode<'b, C> for BigInt {
| minicbor::data::Type::I8
| minicbor::data::Type::I16
| minicbor::data::Type::I32
| minicbor::data::Type::I64 => Ok(Self::Int(d.decode_with(ctx)?)),
| minicbor::data::Type::I64
| minicbor::data::Type::Int => Ok(Self::Int(d.decode_with(ctx)?)),
minicbor::data::Type::Tag => {
let tag = d.tag()?;

Expand Down Expand Up @@ -945,7 +946,8 @@ impl<'b, C> minicbor::decode::Decode<'b, C> for PlutusData {
| minicbor::data::Type::I8
| minicbor::data::Type::I16
| minicbor::data::Type::I32
| minicbor::data::Type::I64 => Ok(Self::BigInt(d.decode_with(ctx)?)),
| minicbor::data::Type::I64
| minicbor::data::Type::Int => Ok(Self::BigInt(d.decode_with(ctx)?)),
minicbor::data::Type::Map | minicbor::data::Type::MapIndef => {
Ok(Self::Map(d.decode_with(ctx)?))
}
Expand Down
2 changes: 2 additions & 0 deletions pallas-primitives/src/babbage/model.rs
Original file line number Diff line number Diff line change
Expand Up @@ -599,6 +599,8 @@ mod tests {
include_str!("../../../test_data/babbage5.block"),
// peculiar block with map undef in plutus data
include_str!("../../../test_data/babbage6.block"),
// block with generic int in cbor
include_str!("../../../test_data/babbage7.block"),
];

for (idx, block_str) in test_blocks.iter().enumerate() {
Expand Down
1 change: 1 addition & 0 deletions test_data/babbage7.block
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
820685828a19f4601a0014cda8582033f1f63f10e82cf72e137b92e6d307be85e8a3ddd5b9131220734b82cd2974ae5820df89101296fec1dc3d62e6c1e595eaff22cc0dfc67e131ef14ba8c4772d3a766582008a1ecffbdd94fca7fcfe54414140dbcc8d24d8ad2f34441f60e6fa0f6f746cb825840baac49adb9c6c7140d7dbfd15fb2592f6ffc8c4b873e8d2916137ce704e09cf4540e830f99db7284d6f30612879974c7dbe7ad3ca2eb5f5d49c4456049d5400c585092f93d16a0c015c0b97df4dce6d57bfcd034a53297cc53ce8d55aa4502a2330baef04f44a37eaf24c395b26e8a4d446d87ff3aac2dc6d965518ffe0e1ca10e7407bf82e050f1bb0ac0adcc75dbedfa02190b79582024386b694d0471cd8a8286bf8b201dc7d3f03e0993c7b565d6873c82c2f46e90845820790572cddd3e53cdb5fef9d9783a1a2003c9f2f031b24b053508a434a3dcec89000558402c10d25b4ec137e1bcba53e4945e2c8014eafcc1022db5b67fba6d6e631b1bbfc364830a23b62c8b17b59a19ab5fc50d3e5bffc89250ecc9a2a86ac9d26876078208005901c078d6f3c2b3fdec9a231fb8607b4c6d18ecaa82c72f838b2eb329058940f10bbc9bdc7b34cd1de928fae2d6928cf11596f93a20e6e34850805c84fd3ce051dd09db8ab75343ef13cfef3504f6dd3e94785c183a782306496d74a6fdf0e8c51e496e57646c27029a34f5bd0aac0c48859e20f3b1f5b092eb81d4c7b365bd53632a1b91a88cfacf1243b4529d960dbfc88b2f0e248c39de2d54f0f6c38eec2e247652f3fc36df5fc80aecc75febc4a99daae04d01772b01a58fae7868299e1f4a8c1dcab6bb2831540dab06d7aaebf9c9f429ce70fc5b9eabc009139ed01a7cb3eb95bc881d6131527f4ef0d9c2fed4f6b5f4a8972571adf24ee4c39b6838f92c5bc9aa4cfe694067607e1021160dbdf0d583027def154d8fba00673e35ad0295cd4fbe8a00fae59c697c3b1061c96a83649926bbcf1b003f762e89e40b6e01302132ac9a6ac0455cf5208bb53dd5beb825ddb6455f33166c0e741e4dc69585f06a987ba0f2712d35d081b9b70036c5656328906ed929957097cdb59ef723ca0e1c7e5478ce172f34bff85a2ea9ea9bedb8186b4e51565d6a3462dcc73cfda1b842d1f1b6d5f548488af68f5cd73c966493f3568476e09eb263010865e9757703b384a900828258200afb84debe54a9b60bc72c779dd2c958f13c744c8100c94761783399364f53d4018258200afb84debe54a9b60bc72c779dd2c958f13c744c8100c94761783399364f53d4020183a300581d7059021cb52c7853fd750249e58f5e54252c226a1e4715635bb9880a3301821a001e8480a1581cd8cd3856429a693435b321efd9facc512796f29fa48d82702d15cdcba14a53505f4143434f554e5401028201d818585ad87a9f581cc6303ca99d1a6ec2ffd0ee10da8369a090505f031445ab0a5379ff474469555344d8799fd8799fc349073a5f283e60eba598ffd8799fc24b2065dd37e335e35ce80000ffd8799f1b20efc636a6368abfff0001ffffa300581d7059021cb52c7853fd750249e58f5e54252c226a1e4715635bb9880a3301821a012a771da2581c2fb998746966cf5d083234454cc2ba9f4a57290d7f3965015d350d4fa144695553441a0255a2ca581c73e11348d40c987ddaca75b3a3c31095b3898955e913039256bbc07da14e53544142494c4954595f504f4f4c01028201d8185863d8799f4469555344d8799fd8799fc349073a5f283e60eba598ffd8799fc24b2065dd2a027f2fb1ca5360ffd8799f3bcb47f353d3e997c0ff0001ffa2d8799f0000ffd8799f1b20efc636a6368abfffd8799f0001ffd8799f3bcb47f353d3e997c0ffff82583900c6303ca99d1a6ec2ffd0ee10da8369a090505f031445ab0a5379ff470d3936e60ade152802e46b2b792573655d990c6b7a91ea8d5af72543821a033c1cc7a1581c2fb998746966cf5d083234454cc2ba9f4a57290d7f3965015d350d4fa144695553441a0255a2cb021a00090f7f09a1581cd8cd3856429a693435b321efd9facc512796f29fa48d82702d15cdcba14a53505f4143434f554e54010b58208b9e6991d11f9cde0c00940c07002aa281e47be957d445c3d5ab3fc6d473c46b0d8182582093c37bbf37eac75dd84c03704caeee0c87f7e2abea7eb4aee024e57880f8bdac000e81581cc6303ca99d1a6ec2ffd0ee10da8369a090505f031445ab0a5379ff470f0012828258207c816708c22574198cb58e5d3d153f84276faeb39c041ba140c6c9f926330a9d00825820e274c5f5b0ac4cfd55406ca98709418b6a622968c3772afbb413311ec9d2a7eb00a60081825820facb208d52cced4ee855c1ef4dcc022d32a8b8ff278cd55c1f8ffd16275ed49f000181a200581d6052e63f22c5107ed776b70f7b92248b02552fd08f3e747bc74509944101821b00000001e0066343a2581c34250edd1e9836f5378702fbf9416b709bc140e04f668cc355208518a1494154414441636f696e191b63581ca51445d9fdab07141cfaf5fed2d78732459ba07e266616015cd37d65a14345546b1868021a00032941031a0016543f09a1581c34250edd1e9836f5378702fbf9416b709bc140e04f668cc355208518a1494154414441636f696e01075820478c324a86d4053d39b11c40f8e431088af76dcd8659a32d8dce34139b13ef65a30083825820879aaf4d64385c6ef35c2fd8f45ae60d7dca9f8ef9312f9aa1e9117bac529c0201825820879aaf4d64385c6ef35c2fd8f45ae60d7dca9f8ef9312f9aa1e9117bac529c0202825820d858d82958ee471260cdc38e933550aa5017060941659a9a170769700b6b2c1a010183a300581d702618e94cdb06792f05ae9b1ec78b0231f4b7f4215b1b4cf52e6342de01821ab309821ea0028201d81858c4d8799fd8799f4040ffd8799f581c065270479316f1d92e00f7f9f095ebeaac9d009c878dc35ce36d340444574d5474ffd8799f581cdda925f9139aee4b8ea49319dffa965e55627b84c61ef3cd19ffc7a751574d54745f537065637472756d5f4e4654ff1903e31b000f871d90d4f39d1b0de0b6b3a7640000581c9dc584e12c37045c5b01c4533eff4c85e4e570d304b0d4958ea3012fd8799f581c6c8c875c7e92c686c5e953dfd78d00e439d17aec312b228040c9c032ff1ab2d05e001a1b4654f6ff825839009dc584e12c37045c5b01c4533eff4c85e4e570d304b0d4958ea3012f6c8c875c7e92c686c5e953dfd78d00e439d17aec312b228040c9c032821a001833fca2581c065270479316f1d92e00f7f9f095ebeaac9d009c878dc35ce36d3404a14547454e537401581c0b573d9b75c7906a778260fa3a5bfa05f32294b878bce0029fa071eea15147454e53745f537065637472756d5f4c711a3c3c58ff825839009dc584e12c37045c5b01c4533eff4c85e4e570d304b0d4958ea3012f6c8c875c7e92c686c5e953dfd78d00e439d17aec312b228040c9c0321a6de3fb9e021a0002d6eda30081825820b25b7bf901dfb74bfbfe4766bd0a3cd23eb8a24ef54abec74c799ad075f3131b00018282581d60b69d1b98521a2bcd3f6a4c31b0a727885258f53224d3747091c6bae41b0000000253fa1b6782581d603931dbca87f7dba2486d95d5305c234de021a8612278fd115b8d04981a000f41f0021a000286a984a300818258207cac56c666ba2ef2c2e9c86e5dbca5ec515d456db6db41ff65a57caf0c272af15840054caf9ad2f889c08139623725df7c4c998e4f046b7f71b969ffd6c5451b97027e48de2d2a2659816e312a83bec1df0ed3dcc489f9b9ee0970757c69cc67a00804800582840100d87980821a000957001a09fd665e840000d8799f581cc6303ca99d1a6ec2ffd0ee10da8369a090505f031445ab0a5379ff471a0255a2caff821a004336ef1a44e4bc6ea200828258201287e9ce9e00a603d250b557146aa0581fc4edf277a244ce39d3b2f2ced5072f58408918cb5fdc1ccbf263c03f604fd019957e82885f6f939b36878f062b57e0dcecb6bfd165a82240b8cdb3a90e15a6af756e778ae4e087b17667ed5bba421c6802825820742d8af3543349b5b18f3cba28f23b2d6e465b9c136c42e1fae6b2390f565427584075f7e700af1a4649a2a531b76d99cd604a814eccb3ac0a6c6f3e4948d9b4f2fc6892721ab333d06d7a00d413b38b09c83275608e64ca119c00ef1880f3d1eb0b01818200581c45d70e54f3b5e9c5a2b0cd417028197bd6f5fa5378c2f5eba896678da10081825820cf2dcbb78980782099fc68f6b380555012cbf5afb7aeddcaed72477d2f80deb258400da4ba6c67bfdb597ec44aab70ad9bfa3d87f3203167351d997f686d6375f4e999d15d7e63b66d3d931f2d98182a3e7edbc99f6e5b4dfe4c97737939df18a00ea10081825820b5ec36e7436672b59b8890224f98018f1bd3efb7160ecf5fac4d55c4ca3a9d20584015734e845b99c723228813f1fb85678c327769de5fea886d789612faa5d3a375f9efde79492627f824a9872712f62006417b6be598722dd931b5dc6e40a8ea07a101d90103a100a11902a2a1636d73678f78264175746f2d4c6f6f702d5472616e73616374696f6e202335363038303320627920415441444160783b4c6976652045706f63682031352c207765206861766520303035682031376d20323173206c65667420756e74696c20746865206e657874206f6e65783649742773204d697474776f6368202d203039204e6f76656d6265722032303232202d2031393a34323a333920696e2041757374726961607838f09f9388205468652063757272656e7420414441205072696365206f6e204b72616b656e2069733a2024302e333337383132202f20414441607820412072616e646f6d205a656e2d51756f746520666f7220796f753a20f09f998f783754686520776f726c64206973206f70656e20666f7220706c61792c2065766572797468696e6720616e64206576657279626f6479206973782d6d6f636b61626c6520696e206120776f6e64657266756c207761792e202d20526f62696e2057696c6c69616d736078374e6f64652d5265766973696f6e3a203061353939313064666330326239313464366633376563653566623836316464323765626166643660782d507265566965772d436861696e20697320617765736f6d652c206861766520736f6d652066756e2120f09f988d7819204265737420726567617264732c204d617274696e203a2d2980

0 comments on commit 4bb755d

Please sign in to comment.