File qmailtoaster-openssl_1_1.patch of Package qmail-toaster
diff -ur orig/qmail-1.03/qmail-remote.c patched/qmail-1.03/qmail-remote.c
--- orig/qmail-1.03/qmail-remote.c 2022-01-31 11:55:56.999070158 +0100
+++ patched/qmail-1.03/qmail-remote.c 2022-01-31 12:01:33.311102219 +0100
@@ -284,8 +284,8 @@
{
#ifdef TLS
/* shouldn't talk to the client unless in an appropriate state */
- int state = ssl ? ssl->state : SSL_ST_BEFORE;
- if (state & SSL_ST_OK || (!smtps && state & SSL_ST_BEFORE))
+ int state = ssl ? SSL_get_state(ssl) : TLS_ST_BEFORE;
+ if (state & TLS_ST_OK || (!smtps && state & TLS_ST_BEFORE))
#endif
substdio_putsflush(&smtpto,"QUIT\r\n");
/* waiting for remote side is just too ridiculous */
@@ -511,7 +511,7 @@
X509_NAME *subj = X509_get_subject_name(peercert);
i = X509_NAME_get_index_by_NID(subj, NID_commonName, -1);
if (i >= 0) {
- const ASN1_STRING *s = X509_NAME_get_entry(subj, i)->value;
+ const ASN1_STRING *s = X509_NAME_ENTRY_get_data(X509_NAME_get_entry(subj, i));
if (s) { peer.len = s->length; peer.s = s->data; }
}
if (peer.len <= 0) {
diff -ur orig/qmail-1.03/qmail-smtpd.c patched/qmail-1.03/qmail-smtpd.c
--- orig/qmail-1.03/qmail-smtpd.c 2022-01-31 11:57:24.400118013 +0100
+++ patched/qmail-1.03/qmail-smtpd.c 2022-01-31 12:02:34.335833848 +0100
@@ -1239,7 +1239,7 @@
subj = X509_get_subject_name(peercert);
n = X509_NAME_get_index_by_NID(subj, NID_pkcs9_emailAddress, -1);
if (n >= 0) {
- const ASN1_STRING *s = X509_NAME_get_entry(subj, n)->value;
+ const ASN1_STRING *s = X509_NAME_ENTRY_get_data(X509_NAME_get_entry(subj, n));
if (s) { email.len = s->length; email.s = s->data; }
}
diff -ur orig/qmail-1.03/ssl_timeoutio.c patched/qmail-1.03/ssl_timeoutio.c
--- orig/qmail-1.03/ssl_timeoutio.c 2022-01-31 11:55:57.003070206 +0100
+++ patched/qmail-1.03/ssl_timeoutio.c 2022-01-31 12:03:52.064765743 +0100
@@ -73,10 +73,10 @@
SSL_renegotiate(ssl);
r = ssl_timeoutio(SSL_do_handshake, t, rfd, wfd, ssl, NULL, 0);
- if (r <= 0 || ssl->type == SSL_ST_CONNECT) return r;
+ if (r <= 0 || SSL_get_state(ssl) == SSL_ST_CONNECT) return r;
/* this is for the server only */
- ssl->state = SSL_ST_ACCEPT;
+ SSL_set_accept_state(ssl);
return ssl_timeoutio(SSL_do_handshake, t, rfd, wfd, ssl, NULL, 0);
}