Refactor asn1_ex_c2i()
authorjsing <jsing@openbsd.org>
Sat, 7 May 2022 10:03:49 +0000 (10:03 +0000)
committerjsing <jsing@openbsd.org>
Sat, 7 May 2022 10:03:49 +0000 (10:03 +0000)
commite2cdf593eb109f1413fc87c19155229447602dd1
treea32ce01d752f8b895859f6eca5b62f2640998679
parent3bde737cd185709f4e3f80f4b881a7795d62ad24
Refactor asn1_ex_c2i()

The asn1_ex_c2i() function currently handles the V_ASN1_ANY case inline,
which means there multiple special cases, with  pointer fudging and
restoring. Instead, split asn1_ex_c2i() into three functions - one that
only handles storage into a primitive type (asn1_ex_c2i_primitive()), one
that handles the V_ASN1_ANY case (asn1_ex_c2i_any()) and calls
asn1_ex_c2i_primitive() with the correct pointer and an asn1_ex_c2i()
that handles the custom functions case, before dispatching to
asn1_ex_c2i_any() or asn1_ex_c2i_primitive(), as appropriate.

This results in cleaner and simpler code.

With input from and ok tb@
lib/libcrypto/asn1/tasn_dec.c