common/utils.c: Correctly handle NULL taken pointer in tal_dup_talarr.

Fixes: #3757

Reported-by: @sumBTC

Changelog-None
This commit is contained in:
ZmnSCPxj jxPCSnmZ 2020-06-22 12:15:42 +08:00 committed by Rusty Russell
parent a25af262e9
commit c100de6d93
2 changed files with 5 additions and 3 deletions

View File

@ -142,9 +142,12 @@ void tal_arr_remove_(void *p, size_t elemsize, size_t n)
tal_resize((char **)p, len - elemsize);
}
void *tal_dup_talarr_(const tal_t *ctx, const tal_t *src, const char *label)
void *tal_dup_talarr_(const tal_t *ctx, const tal_t *src TAKES, const char *label)
{
if (!src)
if (!src) {
/* Correctly handle TAKES on a NULL `src`. */
(void) taken(src);
return NULL;
}
return tal_dup_(ctx, src, 1, tal_bytelen(src), 0, label);
}

View File

@ -3019,7 +3019,6 @@ def test_keysend(node_factory):
assert(inv['msatoshi_received'] >= amt)
@pytest.mark.xfail(strict=True)
def test_invalid_onion_channel_update(node_factory):
'''
Some onion failures "should" send a `channel_update`.