Author: brane
Date: Fri Jun  5 13:13:06 2026
New Revision: 1935028

Log:
Merge r1935023 from trunk, resolving conflicts.

Modified:
   serf/branches/1.3.x-r1935023/   (props changed)
   serf/branches/1.3.x-r1935023/SConstruct
   serf/branches/1.3.x-r1935023/buckets/ssl_buckets.c

Modified: serf/branches/1.3.x-r1935023/SConstruct
==============================================================================
--- serf/branches/1.3.x-r1935023/SConstruct     Fri Jun  5 13:11:55 2026        
(r1935027)
+++ serf/branches/1.3.x-r1935023/SConstruct     Fri Jun  5 13:13:06 2026        
(r1935028)
@@ -430,9 +430,9 @@ env.Default(lib_static, lib_shared, pkgc
 
 if CALLOUT_OKAY:
   conf = Configure(env)
-
-  ### some configuration stuffs
-
+  if not conf.CheckDeclaration('ASN1_STRING_get0_data',
+                               '#include <openssl/asn1.h>', 'C'):
+    env.Append(CPPDEFINES=['SERF_NO_SSL_ASN1_STRING_GET0_DATA'])
   env = conf.Finish()
 
 

Modified: serf/branches/1.3.x-r1935023/buckets/ssl_buckets.c
==============================================================================
--- serf/branches/1.3.x-r1935023/buckets/ssl_buckets.c  Fri Jun  5 13:11:55 
2026        (r1935027)
+++ serf/branches/1.3.x-r1935023/buckets/ssl_buckets.c  Fri Jun  5 13:13:06 
2026        (r1935028)
@@ -56,6 +56,9 @@
 #define USE_OPENSSL_1_1_API
 #endif
 
+#ifdef SERF_NO_SSL_ASN1_STRING_GET0_DATA
+#define ASN1_STRING_get0_data(asn1string) (ASN1_STRING_data(asn1string))
+#endif
 
 /*
  * Here's an overview of the SSL bucket's relationship to OpenSSL and serf.
@@ -566,14 +569,18 @@ get_subject_alt_names(apr_array_header_t
 
             switch (nm->type) {
                 case GEN_DNS:
-                    if (copy_action == ErrorOnNul &&
-                        strlen(nm->d.ia5->data) != nm->d.ia5->length)
+                {
+                    const char *const data =
+                        (const char*)ASN1_STRING_get0_data(nm->d.ia5);
+                    const int length = ASN1_STRING_length(nm->d.ia5);
+
+                    if (copy_action == ErrorOnNul && strlen(data) != length)
                         return SERF_ERROR_SSL_CERT_FAILED;
                     if (san_arr && *san_arr)
-                        p = pstrdup_escape_nul_bytes((const char 
*)nm->d.ia5->data,
-                                                     nm->d.ia5->length,
-                                                     pool);
+                        p = pstrdup_escape_nul_bytes(data, length, pool);
+
                     break;
+                }
                 default:
                     /* Don't know what to do - skip. */
                     break;

Reply via email to