From fccee34a1e9ba8069b75c9047ad624a773c5a0d3 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Mon, 7 Nov 2022 22:26:00 +0100 Subject: [PATCH] In asn1_find_tag(), tag_data and tag_len are not modified if not found. Signed-off-by: Pol Henarejos --- src/asn1.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/asn1.c b/src/asn1.c index ea461c8..5a1f74c 100644 --- a/src/asn1.c +++ b/src/asn1.c @@ -83,9 +83,14 @@ int walk_tlv(const uint8_t *cdata, size_t cdata_len, uint8_t **p, uint16_t *tag, bool asn1_find_tag(const uint8_t *data, size_t data_len, uint16_t itag, size_t *tag_len, uint8_t **tag_data) { uint16_t tag = 0x0; uint8_t *p = NULL; - while (walk_tlv(data, data_len, &p, &tag, tag_len, tag_data)) { - if (itag == tag) + uint8_t *tdata = NULL; + size_t tlen = 0; + while (walk_tlv(data, data_len, &p, &tag, &tlen, &tdata)) { + if (itag == tag) { + *tag_data = tdata; + *tag_len = tlen; return true; + } } return false; }