From adf4a4d5d49c1090edc68c5eafb53fd63638bb81 Mon Sep 17 00:00:00 2001 From: Anjan Chanda <anjan.chanda@iopsys.eu> Date: Fri, 25 Feb 2022 14:38:58 +0100 Subject: [PATCH] allow zero padded cmdus --- src/cmdu.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/cmdu.c b/src/cmdu.c index c01d7de7..f0f76911 100644 --- a/src/cmdu.c +++ b/src/cmdu.c @@ -607,8 +607,14 @@ int cmdu_parse_tlv_single(struct cmdu_buff *c, struct tlv *tv[], } /* malformed cmdu if data remaining */ - if (len) - return -1; + if (len) { + int k = 0; + + while (k < len) { + if (c->data[c->datalen - len + k++] != 0) + return -1; + } + } /* exactly one tlv must be present */ if (policy->present == TLV_PRESENT_ONE && !tv[0]) @@ -661,9 +667,15 @@ int cmdu_parse_tlvs(struct cmdu_buff *c, struct tlv *tv[][16], } } - /* malformed cmdu if data remaining */ - if (len) - return -1; + /* malformed cmdu if data remaining; only allow zero padding */ + if (len) { + int k = 0; + + while (k < len) { + if (c->data[c->datalen - len + k++] != 0) + return -1; + } + } /* strictly check against tlv policies */ for (i = 0; i < policy_len; i++) { -- GitLab