isisd: Ensure rcap is freed in error case

unpack_tlv_router_cap allocates memory that in the error
case is not being freed.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
This commit is contained in:
Donald Sharp 2022-07-20 16:49:09 -04:00
parent d2aeac3870
commit 49efc80d34

View file

@ -3580,9 +3580,9 @@ static int pack_tlv_router_cap(const struct isis_router_cap *router_cap,
} }
static int unpack_tlv_router_cap(enum isis_tlv_context context, static int unpack_tlv_router_cap(enum isis_tlv_context context,
uint8_t tlv_type, uint8_t tlv_len, uint8_t tlv_type, uint8_t tlv_len,
struct stream *s, struct sbuf *log, struct stream *s, struct sbuf *log, void *dest,
void *dest, int indent) int indent)
{ {
struct isis_tlvs *tlvs = dest; struct isis_tlvs *tlvs = dest;
struct isis_router_cap *rcap; struct isis_router_cap *rcap;
@ -3627,7 +3627,7 @@ static int unpack_tlv_router_cap(enum isis_tlv_context context,
log, indent, log, indent,
"WARNING: Router Capability subTLV length too large compared to expected size\n"); "WARNING: Router Capability subTLV length too large compared to expected size\n");
stream_forward_getp(s, STREAM_READABLE(s)); stream_forward_getp(s, STREAM_READABLE(s));
XFREE(MTYPE_ISIS_TLV, rcap);
return 0; return 0;
} }