aboutsummaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
Diffstat (limited to 'common')
-rw-r--r--common/tlv-parser.c5
1 files changed, 4 insertions, 1 deletions
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