python-bitcoinlib
python-bitcoinlib copied to clipboard
CTransaction.stream_deserialize allows empty witness record when witness is signalled
trafficstars
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");
}