Skip to content

Commit

Permalink
Rely on Error/Warning message data lengths being correct
Browse files Browse the repository at this point in the history
In lightning/bolts#950, the (somewhat
strange) requirement that error messages be handled even if the
length field is set larger than the size of the package was
removed. Here we change the code to drop the special handling for
this, opting to just fail to read the message if the length is
incorrect.
  • Loading branch information
TheBlueMatt committed Jan 11, 2022
1 parent 2d7b06e commit d786bfa
Showing 1 changed file with 11 additions and 9 deletions.
20 changes: 11 additions & 9 deletions lightning/src/ln/msgs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ use bitcoin::hash_types::{Txid, BlockHash};
use ln::features::{ChannelFeatures, ChannelTypeFeatures, InitFeatures, NodeFeatures};

use prelude::*;
use core::{cmp, fmt};
use core::fmt;
use core::fmt::Debug;
use io::{self, Read};
use io_extras::read_to_end;
Expand Down Expand Up @@ -1529,10 +1529,11 @@ impl Readable for ErrorMessage {
Ok(Self {
channel_id: Readable::read(r)?,
data: {
let mut sz: usize = <u16 as Readable>::read(r)? as usize;
let data = read_to_end(r)?;
sz = cmp::min(data.len(), sz);
match String::from_utf8(data[..sz as usize].to_vec()) {
let sz: usize = <u16 as Readable>::read(r)? as usize;
let mut data = Vec::with_capacity(sz);
data.resize(sz, 0);
r.read_exact(&mut data)?;
match String::from_utf8(data) {
Ok(s) => s,
Err(_) => return Err(DecodeError::InvalidValue),
}
Expand All @@ -1555,10 +1556,11 @@ impl Readable for WarningMessage {
Ok(Self {
channel_id: Readable::read(r)?,
data: {
let mut sz: usize = <u16 as Readable>::read(r)? as usize;
let data = read_to_end(r)?;
sz = cmp::min(data.len(), sz);
match String::from_utf8(data[..sz as usize].to_vec()) {
let sz: usize = <u16 as Readable>::read(r)? as usize;
let mut data = Vec::with_capacity(sz);
data.resize(sz, 0);
r.read_exact(&mut data)?;
match String::from_utf8(data) {
Ok(s) => s,
Err(_) => return Err(DecodeError::InvalidValue),
}
Expand Down

0 comments on commit d786bfa

Please sign in to comment.