From 9f5f9e15d0b117169b6af41361052fe6c2b66263 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Tue, 10 Nov 2020 14:08:22 +1030 Subject: [PATCH] devtools/decodemsg: handle truncated TLVs properly. Signed-off-by: Rusty Russell --- devtools/print_wire.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/devtools/print_wire.c b/devtools/print_wire.c index a5e11148f..044ee514a 100644 --- a/devtools/print_wire.c +++ b/devtools/print_wire.c @@ -187,6 +187,11 @@ void printwire_tlvs(const char *fieldname, const u8 **cursor, size_t *plen, if (!*cursor) goto fail; + if (length > *plen) { + *plen = 0; + goto fail; + } + ptype = find_print_record_type(type, types, num_types); if (ptype) { size_t tlvlen = length; @@ -195,9 +200,9 @@ void printwire_tlvs(const char *fieldname, const u8 **cursor, size_t *plen, if (!*cursor) goto fail; printf("}\n"); - *plen -= length; } else printf("**TYPE #%"PRIu64" UNKNOWN for TLV %s**\n", type, fieldname); + *plen -= length; } return;