From fd823468a059d8c4869874d22cf93d907a227987 Mon Sep 17 00:00:00 2001 From: Vincenzo Palazzo Date: Fri, 17 Jun 2022 20:48:32 +0100 Subject: [PATCH] signmessage: improve the UX of the rpc command when zbase is not a valid one Changelog-Fixed: signmessage: improve the UX of the rpc command when zbase is not a valid one Stacktrace generated with a bad `zbase` ``` lightningd: lightningd/signmessage.c:59: from_zbase32: Assertion `len == tal_bytelen(u8arr)' failed lightningd: FATAL SIGNAL 6 (version v0.11.1) 0x55b9b1b4e617 send_backtrace [...] ``` Signed-off-by: Vincenzo Palazzo --- lightningd/signmessage.c | 4 +--- tests/test_misc.py | 3 +++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lightningd/signmessage.c b/lightningd/signmessage.c index 44dfe52bfae7..c2236d5cc74e 100644 --- a/lightningd/signmessage.c +++ b/lightningd/signmessage.c @@ -56,8 +56,7 @@ static const u8 *from_zbase32(const tal_t *ctx, const char *msg) if (!bech32_convert_bits(u8arr, &len, 8, u5arr, tal_bytelen(u5arr), 5, false)) return tal_free(u8arr); - assert(len == tal_bytelen(u8arr)); - return u8arr; + return len == tal_bytelen(u8arr) ? u8arr : tal_free(u8arr); } static struct command_result *json_signmessage(struct command *cmd, @@ -235,4 +234,3 @@ static const struct json_command json_checkmessage_cmd = { "Verify a digital signature {zbase} of {message} signed with {pubkey}", }; AUTODATA(json_command, &json_checkmessage_cmd); - diff --git a/tests/test_misc.py b/tests/test_misc.py index 84d2836efb8f..2daf6bb7fac7 100644 --- a/tests/test_misc.py +++ b/tests/test_misc.py @@ -1867,6 +1867,9 @@ def test_signmessage(node_factory): checknokey = l2.rpc.checkmessage(message="message for you", zbase=zm) assert checknokey['pubkey'] == l1.info['id'] assert checknokey['verified'] + # check that checkmassage used with a wrong zbase format throws an RPC exception + with pytest.raises(RpcError, match="zbase is not valid zbase32"): + l2.rpc.checkmessage(message="wrong zbase format", zbase="wrong zbase format") def test_include(node_factory):