Commit ad47ffd79a for openssl.org

commit ad47ffd79af936d06e7978b9c2984a2a33845135
Author: Nikola Pajkovsky <nikolap@openssl.org>
Date:   Wed May 20 08:19:46 2026 +0200

    avoid d2i_of_void asn1 callbacks in GENERAL_NAME_dup

    use IMPLEMENT_ASN1_DUP_FUNCTION(GENERAL_NAME) so duplication goes
    through ASN1_item_dup() instead of calling ASN1_dup() with cast
    i2d/d2i function pointers. This avoids UBSan function type errors
    while preserving the public GENERAL_NAME_dup() API.

    Signed-off-by: Nikola Pajkovsky <nikolap@openssl.org>

    Reviewed-by: Neil Horman <nhorman@openssl.org>
    Reviewed-by: Milan Broz <mbroz@openssl.org>
    MergeDate: Thu Jun 25 12:12:59 2026
    (Merged from https://github.com/openssl/openssl/pull/31523)

diff --git a/crypto/x509/v3_genn.c b/crypto/x509/v3_genn.c
index d63168a77a..23a2435842 100644
--- a/crypto/x509/v3_genn.c
+++ b/crypto/x509/v3_genn.c
@@ -49,13 +49,7 @@ ASN1_ITEM_TEMPLATE(GENERAL_NAMES) = ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF,
 ASN1_ITEM_TEMPLATE_END(GENERAL_NAMES)

 IMPLEMENT_ASN1_FUNCTIONS(GENERAL_NAMES)
-
-GENERAL_NAME *GENERAL_NAME_dup(const GENERAL_NAME *a)
-{
-    return (GENERAL_NAME *)ASN1_dup((i2d_of_void *)i2d_GENERAL_NAME,
-        (d2i_of_void *)d2i_GENERAL_NAME,
-        (char *)a);
-}
+IMPLEMENT_ASN1_DUP_FUNCTION(GENERAL_NAME)

 int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src)
 {