From: Bernd Edlinger Date: Mon, 1 Jul 2019 07:06:02 +0000 (+0200) Subject: Fix ASN1_TYPE_get/set with type=V_ASN1_BOOLEAN X-Git-Tag: openssl-3.0.0-alpha1~1829 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=6335f837cfa7eaf1202f2557bf2ba148987226e7;p=oweals%2Fopenssl.git Fix ASN1_TYPE_get/set with type=V_ASN1_BOOLEAN BOOLEAN does not have valid data in the value.ptr member, thus don't use it here. Fixes #9276 [extended tests] Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/9278) --- diff --git a/crypto/asn1/a_type.c b/crypto/asn1/a_type.c index 158440134d..9b8810cd74 100644 --- a/crypto/asn1/a_type.c +++ b/crypto/asn1/a_type.c @@ -15,7 +15,9 @@ int ASN1_TYPE_get(const ASN1_TYPE *a) { - if ((a->value.ptr != NULL) || (a->type == V_ASN1_NULL)) + if (a->type == V_ASN1_BOOLEAN + || a->type == V_ASN1_NULL + || a->value.ptr != NULL) return a->type; else return 0; @@ -23,7 +25,9 @@ int ASN1_TYPE_get(const ASN1_TYPE *a) void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value) { - if (a->value.ptr != NULL) { + if (a->type != V_ASN1_BOOLEAN + && a->type != V_ASN1_NULL + && a->value.ptr != NULL) { ASN1_TYPE **tmp_a = &a; asn1_primitive_free((ASN1_VALUE **)tmp_a, NULL, 0); }