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;