X-Git-Url: http://git.bitcoin.ninja/index.cgi?p=rust-lightning;a=blobdiff_plain;f=lightning-invoice%2Fsrc%2Fde.rs;fp=lightning-invoice%2Fsrc%2Fde.rs;h=dbcb74e073aeaec450a3333159cfb6ace5232115;hp=9c5120e4ad67cb2e9ccdc492b0757a8479c380f0;hb=3f229052eaba48d13ab66e933bc8e63efea5ecaf;hpb=e26c9b051a5983eae1f38fbd403763ad9924bf13 diff --git a/lightning-invoice/src/de.rs b/lightning-invoice/src/de.rs index 9c5120e4..dbcb74e0 100644 --- a/lightning-invoice/src/de.rs +++ b/lightning-invoice/src/de.rs @@ -250,7 +250,13 @@ impl FromStr for SignedRawInvoice { type Err = ParseError; fn from_str(s: &str) -> Result { - let (hrp, data) = bech32::decode(s)?; + let (hrp, data, var) = bech32::decode(s)?; + + if var == bech32::Variant::Bech32m { + // Consider Bech32m addresses to be "Invalid Checksum", since that is what we'd get if + // we didn't support Bech32m (which lightning does not use). + return Err(ParseError::Bech32Error(bech32::Error::InvalidChecksum)); + } if data.len() < 104 { return Err(ParseError::TooShortDataPart);