mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-10-22 00:41:55 -09:00
package/qpid-proton: fix build with OpenSSL 4.0.0
Signed-off-by: Bernd Kuhls <bernd@kuhls.net> Cc: Luca Ceresoli <luca.ceresoli@bootlin.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
committed by
Thomas Petazzoni
parent
803518cba9
commit
543cba029e
@@ -0,0 +1,80 @@
|
||||
From 7be093d8d96104caab3fa858ab9886f23d62ee04 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Goirand <zigo@debian.org>
|
||||
Date: Wed, 17 Jun 2026 15:31:31 +0200
|
||||
Subject: [PATCH] PROTON-2937: Add OpenSSL 4.x compat
|
||||
|
||||
Fixes this Debian bug: https://bugs.debian.org/1138394
|
||||
|
||||
It retains compatibility with OpenSSL 3
|
||||
|
||||
Closes #447
|
||||
|
||||
Upstream: https://github.com/apache/qpid-proton/commit/7be093d8d96104caab3fa858ab9886f23d62ee04
|
||||
|
||||
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
|
||||
---
|
||||
c/src/ssl/openssl.c | 18 +++++++++---------
|
||||
1 file changed, 9 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/c/src/ssl/openssl.c b/c/src/ssl/openssl.c
|
||||
index 62d4b40a..4c3a76c5 100644
|
||||
--- a/c/src/ssl/openssl.c
|
||||
+++ b/c/src/ssl/openssl.c
|
||||
@@ -339,7 +339,7 @@ static int verify_callback(int preverify_ok, X509_STORE_CTX *ctx)
|
||||
GENERAL_NAME *name = sk_GENERAL_NAME_value( sans, i );
|
||||
if (name->type == GEN_DNS) {
|
||||
ASN1_STRING *asn1 = name->d.dNSName;
|
||||
- if (asn1 && asn1->data && asn1->length) {
|
||||
+ if (asn1 && ASN1_STRING_get0_data(asn1) && ASN1_STRING_length(asn1) > 0){
|
||||
unsigned char *str;
|
||||
int len = ASN1_STRING_to_UTF8( &str, asn1 );
|
||||
if (len >= 0) {
|
||||
@@ -354,11 +354,11 @@ static int verify_callback(int preverify_ok, X509_STORE_CTX *ctx)
|
||||
}
|
||||
|
||||
/* if no general names match, try the CommonName from the subject */
|
||||
- X509_NAME *name = X509_get_subject_name(cert);
|
||||
+ const X509_NAME *name = X509_get_subject_name(cert);
|
||||
int i = -1;
|
||||
while (!matched && (i = X509_NAME_get_index_by_NID(name, NID_commonName, i)) >= 0) {
|
||||
- X509_NAME_ENTRY *ne = X509_NAME_get_entry(name, i);
|
||||
- ASN1_STRING *name_asn1 = X509_NAME_ENTRY_get_data(ne);
|
||||
+ const X509_NAME_ENTRY *ne = X509_NAME_get_entry(name, i);
|
||||
+ const ASN1_STRING *name_asn1 = X509_NAME_ENTRY_get_data(ne);
|
||||
if (name_asn1) {
|
||||
unsigned char *str;
|
||||
int len = ASN1_STRING_to_UTF8( &str, name_asn1);
|
||||
@@ -1558,7 +1558,7 @@ const char* pn_ssl_get_remote_subject(pn_ssl_t *ssl0)
|
||||
if (!ssl->subject) {
|
||||
X509 *cert = get_peer_certificate(ssl);
|
||||
if (!cert) return NULL;
|
||||
- X509_NAME *subject = X509_get_subject_name(cert);
|
||||
+ const X509_NAME *subject = X509_get_subject_name(cert);
|
||||
if (!subject) return NULL;
|
||||
|
||||
BIO *out = BIO_new(BIO_s_mem());
|
||||
@@ -1677,17 +1677,17 @@ const char* pn_ssl_get_remote_subject_subfield(pn_ssl_t *ssl0, pn_ssl_cert_subje
|
||||
X509 *cert = get_peer_certificate(ssl);
|
||||
if (!cert) return NULL;
|
||||
|
||||
- X509_NAME *subject_name = X509_get_subject_name(cert);
|
||||
+ const X509_NAME *subject_name = X509_get_subject_name(cert);
|
||||
|
||||
// TODO (gmurthy) - A server side cert subject field can have more than one common name like this - Subject: CN=www.domain1.com, CN=www.domain2.com, see https://bugzilla.mozilla.org/show_bug.cgi?id=380656
|
||||
// For now, we will only return the first common name if there is more than one common name in the cert
|
||||
int index = X509_NAME_get_index_by_NID(subject_name, openssl_field, -1);
|
||||
|
||||
if (index > -1) {
|
||||
- X509_NAME_ENTRY *ne = X509_NAME_get_entry(subject_name, index);
|
||||
+ const X509_NAME_ENTRY *ne = X509_NAME_get_entry(subject_name, index);
|
||||
if(ne) {
|
||||
- ASN1_STRING *name_asn1 = X509_NAME_ENTRY_get_data(ne);
|
||||
- return (char *) name_asn1->data;
|
||||
+ const ASN1_STRING *name_asn1 = X509_NAME_ENTRY_get_data(ne);
|
||||
+ return (const char *)ASN1_STRING_get0_data(name_asn1);
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
2.47.3
|
||||
|
||||
Reference in New Issue
Block a user