[invoice] Ignore InvalidLength fields

BOLT 11 states that a reader "MUST skip over...`p`, `h`, `s` or `n`
fields that do NOT have data_lengths of 52, 52, 52 or 53,
respectively." Here we do so by simply ignoring any invalid-length
field.
This commit is contained in:
Matt Corallo 2021-08-24 23:15:07 +00:00
parent 75f7af64f3
commit c7cf5011be

View file

@ -419,7 +419,7 @@ fn parse_tagged_parts(data: &[u5]) -> Result<Vec<RawTaggedField>, ParseError> {
Ok(field) => { Ok(field) => {
parts.push(RawTaggedField::KnownSemantics(field)) parts.push(RawTaggedField::KnownSemantics(field))
}, },
Err(ParseError::Skip) => { Err(ParseError::Skip)|Err(ParseError::Bech32Error(bech32::Error::InvalidLength)) => {
parts.push(RawTaggedField::UnknownSemantics(field.into())) parts.push(RawTaggedField::UnknownSemantics(field.into()))
}, },
Err(e) => {return Err(e)} Err(e) => {return Err(e)}