Skip to content

Commit ddd308c

Browse files
committed
f: catch invalid Trampoline onion match arms explicitly
1 parent 2891208 commit ddd308c

File tree

1 file changed

+21
-16
lines changed

1 file changed

+21
-16
lines changed

lightning/src/ln/onion_utils.rs

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1854,22 +1854,27 @@ where
18541854
err_code: INVALID_ONION_BLINDING,
18551855
})
18561856
},
1857-
Ok((_, None)) => Err(OnionDecodeErr::Relay {
1858-
err_msg: "Non-final Trampoline onion data provided to us as last hop",
1859-
err_code: 0x4000 | 22,
1860-
shared_secret,
1861-
trampoline_shared_secret: Some(SharedSecret::from_bytes(
1862-
trampoline_shared_secret,
1863-
)),
1864-
}),
1865-
Ok((_, Some(_))) => Err(OnionDecodeErr::Relay {
1866-
err_msg: "Final Trampoline onion data provided to us as intermediate hop",
1867-
err_code: 0x4000 | 22,
1868-
shared_secret,
1869-
trampoline_shared_secret: Some(SharedSecret::from_bytes(
1870-
trampoline_shared_secret,
1871-
)),
1872-
}),
1857+
Ok((msgs::InboundTrampolinePayload::Forward(_), None)) => {
1858+
Err(OnionDecodeErr::Relay {
1859+
err_msg: "Non-final Trampoline onion data provided to us as last hop",
1860+
err_code: 0x4000 | 22,
1861+
shared_secret,
1862+
trampoline_shared_secret: Some(SharedSecret::from_bytes(
1863+
trampoline_shared_secret,
1864+
)),
1865+
})
1866+
},
1867+
Ok((msgs::InboundTrampolinePayload::Receive(_), Some(_))) => {
1868+
Err(OnionDecodeErr::Relay {
1869+
err_msg:
1870+
"Final Trampoline onion data provided to us as intermediate hop",
1871+
err_code: 0x4000 | 22,
1872+
shared_secret,
1873+
trampoline_shared_secret: Some(SharedSecret::from_bytes(
1874+
trampoline_shared_secret,
1875+
)),
1876+
})
1877+
},
18731878
Err(e) => Err(e),
18741879
}
18751880
},

0 commit comments

Comments
 (0)