embed support for CHOICE type
Reviewed-by: Rich Salz <rsalz@openssl.org>
This commit is contained in:
parent
71a64af331
commit
44c734e95c
2 changed files with 11 additions and 5 deletions
|
@ -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:
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue