From cc78b26a4729db2280334214e21a8847e95d2ab0 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Fri, 12 Jul 2024 15:57:48 +0900 Subject: [PATCH] common: Fix tlv-parser for constructed OCTET-STRING. * common/tlv-parser.c (tlv_expect_octet_string): Fix assignment of N value. -- Before the change, need_octet_string_cramming returns always false, because N==0. Signed-off-by: NIIBE Yutaka --- common/tlv-parser.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/common/tlv-parser.c b/common/tlv-parser.c index 2cafac3e9..bc22c4f4f 100644 --- a/common/tlv-parser.c +++ b/common/tlv-parser.c @@ -556,7 +556,10 @@ tlv_expect_octet_string (tlv_parser_t tlv, int encapsulates, && (!tlv->ti.is_constructed || encapsulates))) return (tlv->lasterr = gpg_error (GPG_ERR_INV_OBJ)); p = tlv->buffer; - if (!(n=tlv->ti.length) && !tlv->ti.ndef) + n = tlv->ti.length; + if (!n && tlv->ti.ndef) + n = tlv->bufsize; + else if (!tlv->ti.length) return (tlv->lasterr = gpg_error (GPG_ERR_TOO_SHORT)); if (encapsulates && tlv->ti.is_constructed