status-im/nimbus-eth2

[Crash/Fuzzing] AssertionError during Deposit SSZ parsing.

pventuzelo opened this issue · 5 comments

Hi,

During fuzzing with beacon-fuzz, I triggered an AssertionError during parsing of Deposit ssz file with mainnet preset.

Error:
Error: unhandled exception: XXX/nim-beacon-chain/beacon_chain/spec/crypto.nim(290, 12) 'value.kind == Real' [AssertionError]

Reproducing

Download:
assert_nimbus_deposit.zip

commit: 96431bfd861be168ecc4cefb14fdb77d28108a24

Load the file using ncli_pretty:

$ cd ncli

$ ../env.sh nim c -d:const_preset=mainnet ncli_pretty

$ ./ncli_pretty --kind=deposit --file=assert_nimbus_deposit.ssz 
Traceback (most recent call last, using override)
XXX/nim-beacon-chain/vendor/nim-confutils/confutils.nim(981) confutils
XXX/nim-beacon-chain/vendor/nim-serialization/serialization.nim(41) CLI
XXX/nim-beacon-chain/vendor/nim-serialization/serialization.nim(27) encodeImpl
XXX/nim-beacon-chain/vendor/nim-serialization/serialization/object_serialization.nim(173) writeValue
XXX/nim-beacon-chain/vendor/nim-serialization/serialization/object_serialization.nim(173) writeValue
XXX/nim-beacon-chain/beacon_chain/spec/crypto.nim(290) writeValue
XXX/nim-beacon-chain/vendor/nimbus-build-system/vendor/Nim/lib/system/assertions.nim(29) failedAssertImpl
XXX/nim-beacon-chain/vendor/nimbus-build-system/vendor/Nim/lib/system/assertions.nim(22) raiseAssert
XXX/nim-beacon-chain/vendor/nimbus-build-system/vendor/Nim/lib/system/fatal.nim(51) sysFatal
XXX/nim-beacon-chain/vendor/nimbus-build-system/vendor/Nim/lib/system/excpt.nim(407) reportUnhandledError
XXX/nim-beacon-chain/vendor/nimbus-build-system/vendor/Nim/lib/system/excpt.nim(358) reportUnhandledErrorAux
Error: unhandled exception: XXX/nim-beacon-chain/beacon_chain/spec/crypto.nim(290, 12) `value.kind == Real`  [AssertionError]

I can reproduce this on 96431bfd861be168ecc4cefb14fdb77d28108a24 but not current devel -- 7b8d6ea

For devel branch, commit 7b8d6ea61c46ceb0edce1418a38275d7859f1334

Try with this sample:
assert_nimbus_devel_deposit.zip

Same lack of crash here on devel:

nim-beacon-chain/ncli$ ./ncli_pretty --kind=deposit --file=../../assert_nimbus_devel_deposit.ssz | head && echo exit value is 0
{
  "proof": [
    {
      "data": [
        0,
        0,
        0,
        0,
        0,
        0,
exit value is 0

I'm on commit:

commit 7b8d6ea61c46ceb0edce1418a38275d7859f1334 (HEAD -> devel, origin/devel)
Author: Ștefan Talpalaru <stefantalpalaru@yahoo.com>
Date:   Thu Apr 16 00:20:27 2020 +0200

my bad, on devel it's good ;)

Good to know, and glad to have verified this was fixed.