This does free the array but not the array members. These get implicitly allocated in crypto_cert_subject_alt_name using OpenSSL's ASN1_STRING_to_UTF8 and should be freed using OPENSSL_free(). However IMHO these internals should be hidden by creating/using a function crypto_cert_subject_alt_name_free