embed support for CHOICE type

Reviewed-by: Rich Salz <rsalz@openssl.org>
This commit is contained in:
Dr. Stephen Henson 2015-10-06 22:53:48 +01:00
parent 71a64af331
commit 44c734e95c
2 changed files with 11 additions and 5 deletions

View file

@ -125,8 +125,10 @@ static void asn1_item_embed_free(ASN1_VALUE **pval, const ASN1_ITEM *it,
}
if (asn1_cb)
asn1_cb(ASN1_OP_FREE_POST, pval, it, NULL);
OPENSSL_free(*pval);
*pval = NULL;
if (embed == 0) {
OPENSSL_free(*pval);
*pval = NULL;
}
break;
case ASN1_ITYPE_EXTERN:

View file

@ -142,9 +142,13 @@ int asn1_item_embed_new(ASN1_VALUE **pval, const ASN1_ITEM *it, int embed)
return 1;
}
}
*pval = OPENSSL_zalloc(it->size);
if (!*pval)
goto memerr;
if (embed) {
memset(*pval, 0, it->size);
} else {
*pval = OPENSSL_zalloc(it->size);
if (!*pval)
goto memerr;
}
asn1_set_choice_selector(pval, -1, it);
if (asn1_cb && !asn1_cb(ASN1_OP_NEW_POST, pval, it, NULL))
goto auxerr;