Dear Maintainer,

In Ubuntu, the attached patch fixes the FTBFS with OpenSSL 4 in the
libpoe-filter-ssl-perl package. Thanks for considering the patch!

- Brent Kerby
Description: Use accessors on ASN1_STRING for OpenSSL 4 compatibility
 In OpenSSL 4, ASN1_STRING is an opaque type. The members `data` and
 `length` are no longer publicly visible, so accessor functions must
 be used instead.
Author: Brent Kerby <[email protected]>
Forwarded: https://rt.cpan.org/Public/Bug/Display.html?id=180181
Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/libpoe-filter-ssl-perl/+bug/2154857
Bug-Debian: http://bugs.debian.org/1138310
Last-Update: 2026-07-21
===================================================================
--- a/SSL.xs
+++ b/SSL.xs
@@ -55,7 +55,7 @@
    CODE:
       RETVAL = X509_get_serialNumber(cert);
       ST(0) = sv_newmortal();   /* Undefined to start with */
-      sv_setpvn( ST(0), RETVAL->data, RETVAL->length);
+      sv_setpvn( ST(0), ASN1_STRING_get0_data(RETVAL), ASN1_STRING_length(RETVAL));
 
 ASN1_INTEGER *
 POE_FILTER_verify_serial_against_crl_file(crlfile, serial)
@@ -101,10 +101,10 @@
 
          revoked = sk_X509_REVOKED_value(revokes, i);
          asn_ser = X509_REVOKED_get0_serialNumber(revoked);
-         if ( (asn_ser->length > 0) &&
-              (asn_ser->length == lenser) &&
-              (strncmp(asn_ser->data, serial, lenser) == 0)) {
-            sv_setpvn( ST(0), asn_ser->data, asn_ser->length);
+         if ( (ASN1_STRING_length(asn_ser) > 0) &&
+              (ASN1_STRING_length(asn_ser) == lenser) &&
+              (strncmp(ASN1_STRING_get0_data(asn_ser), serial, lenser) == 0)) {
+            sv_setpvn( ST(0), ASN1_STRING_get0_data(asn_ser), ASN1_STRING_length(asn_ser));
             goto end;
          }
       }

Reply via email to