diff --git a/common/features.c b/common/features.c index 375196e5d..ff193c203 100644 --- a/common/features.c +++ b/common/features.c @@ -195,8 +195,9 @@ u8 *get_agreed_channelfeatures(const tal_t *ctx, max_len = (i / 8) + 1; } - /* Trim to length */ - tal_resize(&f, max_len); + /* Trim to length (unless it's already NULL). */ + if (f) + tal_resize(&f, max_len); return f; } diff --git a/wire/fromwire.c b/wire/fromwire.c index 4009c7f7e..6045b7f98 100644 --- a/wire/fromwire.c +++ b/wire/fromwire.c @@ -211,6 +211,9 @@ u8 *fromwire_tal_arrn(const tal_t *ctx, const u8 **cursor, size_t *max, size_t num) { u8 *arr; + if (num == 0) + return NULL; + if (num > *max) return fromwire_fail(cursor, max);