sk_***_new_null() seems to be there to avoid exactly this sort of thing which is a cast between NULL and a function pointer.
diff --git a/crypto/asn1/x_name.c b/crypto/asn1/x_name.c index 64baf57..62e0ed0 100644 --- a/crypto/asn1/x_name.c +++ b/crypto/asn1/x_name.c
@@ -217,7 +217,7 @@ ASN1_CTX c; M_ASN1_New_Malloc(ret,X509_NAME); - if ((ret->entries=sk_X509_NAME_ENTRY_new(NULL)) == NULL) + if ((ret->entries=sk_X509_NAME_ENTRY_new_null()) == NULL) { c.line=__LINE__; goto err2; } M_ASN1_New(ret->bytes,BUF_MEM_new); ret->modified=1;