X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;ds=sidebyside;f=lightning-invoice%2Fsrc%2Fde.rs;fp=lightning-invoice%2Fsrc%2Fde.rs;h=dbcb74e073aeaec450a3333159cfb6ace5232115;hb=bee9a1e4030e04a91a2d774784a2e2fc545ae797;hp=9c5120e4ad67cb2e9ccdc492b0757a8479c380f0;hpb=fe4b0b86db758a31164afc0f8620f566a4143d5f;p=rust-lightning 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);