From 51da2802aab30078f592db3abccc1304d33218ac Mon Sep 17 00:00:00 2001 From: Mark Spanbroek Date: Wed, 1 Dec 2021 16:34:02 +0100 Subject: [PATCH] Decoding fails gracefully in several error cases --- contractabi/decoding.nim | 31 +++++++++++++++++++++++------- tests/contractabi/testDecoding.nim | 27 +++++++++++++++++++------- 2 files changed, 44 insertions(+), 14 deletions(-) diff --git a/contractabi/decoding.nim b/contractabi/decoding.nim index eac998a..6e876e0 100644 --- a/contractabi/decoding.nim +++ b/contractabi/decoding.nim @@ -45,23 +45,37 @@ func updateLast(decoder: var AbiDecoder, index: int) = func advance(decoder: var AbiDecoder, amount: int): ?!void = decoder.index += amount decoder.updateLast(decoder.index) + if decoder.index <= decoder.bytes.len: + success() + else: + failure "reading past end" + +func skipPadding(decoder: var AbiDecoder, amount: int): ?!void = + let index = decoder.index + ?decoder.advance(amount) + for i in index..