Skip to content

Commit

Permalink
verify the ignored fee is still 0 (mimblewimble#3007)
Browse files Browse the repository at this point in the history
* verify the ignored bytes are indeed 0

* check for !=0 (rather than >0)
  • Loading branch information
antiochp authored Aug 29, 2019
1 parent 357bc11 commit 97f961f
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions core/src/core/transaction.rs
Original file line number Diff line number Diff line change
Expand Up @@ -122,17 +122,26 @@ impl Writeable for KernelFeatures {
impl Readable for KernelFeatures {
/// Still only supporting protocol version v1 serialization.
/// Always read both fee and lock_height, regardless of feature variant.
/// These will be 0 values if not applicable, but bytes must still be read.
/// These will be 0 values if not applicable, but bytes must still be read and verified.
fn read(reader: &mut dyn Reader) -> Result<KernelFeatures, ser::Error> {
let features = match reader.read_u8()? {
KernelFeatures::PLAIN_U8 => {
let fee = reader.read_u64()?;
let _lock_height = reader.read_u64()?;
let lock_height = reader.read_u64()?;
if lock_height != 0 {
return Err(ser::Error::CorruptedData);
}
KernelFeatures::Plain { fee }
}
KernelFeatures::COINBASE_U8 => {
let _fee = reader.read_u64()?;
let _lock_height = reader.read_u64()?;
let fee = reader.read_u64()?;
if fee != 0 {
return Err(ser::Error::CorruptedData);
}
let lock_height = reader.read_u64()?;
if lock_height != 0 {
return Err(ser::Error::CorruptedData);
}
KernelFeatures::Coinbase
}
KernelFeatures::HEIGHT_LOCKED_U8 => {
Expand Down

0 comments on commit 97f961f

Please sign in to comment.