|ASN1_ITEM_NEW(3)||Library Functions Manual||ASN1_ITEM_NEW(3)|
ASN1_item_free — generic
ASN.1 value constructor and destructor
*val_in, const ASN1_ITEM *it);
ASN1_item_new() allocates and initializes
an empty ASN.1 value of the type described by the global static object
If the item type described by it is
ASN1_item_free() decrements the
reference count of val_in. Otherwise, or if the
reference count reaches 0,
val_in, assuming that it is of the type described by
it. If the true type of val_in
fails to match the specified it, buffer overflows and
segmentation faults are likely to occur. It is not possible to recover the
type of an ASN1_VALUE object by inspecting it; the
type always needs to be remembered separately.
ASN1_VALUE is an incomplete type, and pointers to it always require casting to the correct complete type before they can be dereferenced. For all practical purposes, a pointer to ASN1_VALUE is equivalent to a void pointer.
Depending on it, there are more than 150
different types that
ASN1_item_new() may return.
Most of them are pointers to structures or pointers to arrays of structures,
but there are a few exceptions, for example: If it is
ASN1_item_new() returns a specific invalid pointer
representing the unique ASN1_NULL object. If
does not return a pointer at all, but a long value
cast to ASN1_VALUE *.
ASN1_item_new() function returns the
new ASN1_VALUE object if successful; otherwise
NULL is returned and an error code can be retrieved
ASN1_item_free() first appeared in OpenSSL 0.9.7 and
have been available since OpenBSD 3.2.
The ASN1_VALUE type compromises type safety and invites programming mistakes that will typically have severe consequences.
|June 14, 2019||OpenBSD-current|