提交 44c734e9 编写于 作者: D Dr. Stephen Henson

embed support for CHOICE type

Reviewed-by: NRich Salz <rsalz@openssl.org>
上级 71a64af3
...@@ -125,8 +125,10 @@ static void asn1_item_embed_free(ASN1_VALUE **pval, const ASN1_ITEM *it, ...@@ -125,8 +125,10 @@ static void asn1_item_embed_free(ASN1_VALUE **pval, const ASN1_ITEM *it,
} }
if (asn1_cb) if (asn1_cb)
asn1_cb(ASN1_OP_FREE_POST, pval, it, NULL); asn1_cb(ASN1_OP_FREE_POST, pval, it, NULL);
OPENSSL_free(*pval); if (embed == 0) {
*pval = NULL; OPENSSL_free(*pval);
*pval = NULL;
}
break; break;
case ASN1_ITYPE_EXTERN: case ASN1_ITYPE_EXTERN:
......
...@@ -142,9 +142,13 @@ int asn1_item_embed_new(ASN1_VALUE **pval, const ASN1_ITEM *it, int embed) ...@@ -142,9 +142,13 @@ int asn1_item_embed_new(ASN1_VALUE **pval, const ASN1_ITEM *it, int embed)
return 1; return 1;
} }
} }
*pval = OPENSSL_zalloc(it->size); if (embed) {
if (!*pval) memset(*pval, 0, it->size);
goto memerr; } else {
*pval = OPENSSL_zalloc(it->size);
if (!*pval)
goto memerr;
}
asn1_set_choice_selector(pval, -1, it); asn1_set_choice_selector(pval, -1, it);
if (asn1_cb && !asn1_cb(ASN1_OP_NEW_POST, pval, it, NULL)) if (asn1_cb && !asn1_cb(ASN1_OP_NEW_POST, pval, it, NULL))
goto auxerr; goto auxerr;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册