petertodd/python-bitcoinlib

CTransaction.stream_deserialize allows empty witness record when witness is signalled

Opened this issue · 0 comments

dgpv commented

in CTransaction.stream_deserialize(), if it detects that witness is signalled, it just tries to deserialize the witness and does not check if it is null. Core has a check in this case:

         if (!tx.HasWitness()) {
            /* It's illegal to encode witnesses when all witness stacks are empty. */
            throw std::ios_base::failure("Superfluous witness record");
        }