ASN.1 enc: check ASN1_item_ex_i2d() consistency
authortb <tb@openbsd.org>
Mon, 6 Mar 2023 08:08:31 +0000 (08:08 +0000)
committertb <tb@openbsd.org>
Mon, 6 Mar 2023 08:08:31 +0000 (08:08 +0000)
commitdf536b2a535fed0cf21c5c01c6025907bee2c32f
tree7414f18e404d4f8be0659f8a883dc2a9881a2e55
parente3299561a6f9b60a735f5b2d393ba8210410ca08
ASN.1 enc: check ASN1_item_ex_i2d() consistency

The i2d API design is: call a function first with a pointer to NULL, get
the length, allocate a buffer, call the function passing the buffer in.
Both calls should be checked since ther are still internal allocations.

At the heart of ASN.1 encoding, this idiom is used and the second call
is assumed to succeed after the length was determined. This is far from
guaranteed. Check that the second call returns the same length and error
otherwise.

ok jsing
lib/libcrypto/asn1/tasn_enc.c