diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2014-12-17 14:34:36 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2014-12-17 14:34:36 +0000 |
commit | f5e4b6b5b566320a8d774f9475540f7d0e6a704d (patch) | |
tree | 8e3db9a43f76a410f0f5196fc38c4eca6bd3168b /crypto/asn1/tasn_dec.c | |
parent | 9ca2cc78a98297091f4e264e2378312ab906a93c (diff) |
Reject invalid constructed encodings.
According to X6.90 null, object identifier, boolean, integer and enumerated
types can only have primitive encodings: return an error if any of
these are received with a constructed encoding.
Reviewed-by: Emilia Käsper <emilia@openssl.org>
Diffstat (limited to 'crypto/asn1/tasn_dec.c')
-rw-r--r-- | crypto/asn1/tasn_dec.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/crypto/asn1/tasn_dec.c b/crypto/asn1/tasn_dec.c index 87d7dfdf5c..2cbfa81475 100644 --- a/crypto/asn1/tasn_dec.c +++ b/crypto/asn1/tasn_dec.c @@ -870,6 +870,14 @@ static int asn1_d2i_ex_primitive(ASN1_VALUE **pval, } else if (cst) { + if (utype == V_ASN1_NULL || utype == V_ASN1_BOOLEAN + || utype == V_ASN1_OBJECT || utype == V_ASN1_INTEGER + || utype == V_ASN1_ENUMERATED) + { + ASN1err(ASN1_F_ASN1_D2I_EX_PRIMITIVE, + ASN1_R_TYPE_NOT_PRIMITIVE); + return 0; + } buf.length = 0; buf.max = 0; buf.data = NULL; |