On Fri, Jul 19, 2024 at 05:09:15PM +0200, Remi Locherer wrote:
> On Mon, Jul 15, 2024 at 01:45:32PM +0100, Stuart Henderson wrote:
> > On 2024/07/14 21:08, Remi Locherer wrote:
> > > -V =                      8.2208.0
> > > +V =                      8.2404.0
> > >  DISTNAME =               rsyslog-$V
> > >  PKGNAME-main =           rsyslog-$V
> > >  PKGNAME-mysql =          rsyslog-mysql-$V
> > > @@ -22,8 +22,6 @@ REVISION-pgsql =        0
> > 
> > There are some REVISION-* to remove too.
> > 
> > > --- /dev/null     1 Jan 1970 00:00:00 -0000
> > > +++ patches/patch-runtime_net_ossl_c      20 May 2024 19:52:41 -0000
> > > @@ -0,0 +1,24 @@
> > > +LibreSSL does not support SSL_CONF_CTX.
> > > +This patch is already present in rsyslog master and will most likely
> > > +ship with a future version.
> > 
> > I'm not sure if this is quite enough. It removes the
> > net_ossl_apply_tlscgfcmd function but not the prototype, and it's still
> > referenced later in the BEGINobjQueryInterface(net_ossl) bits below in
> > that file,
> > 
> > ...
> > 1196         pIf->osslGetpeercert            = net_ossl_getpeercert;
> > 1197         pIf->osslChkpeercertvalidity    = net_ossl_chkpeercertvalidity;
> > 1198         pIf->osslApplyTlscgfcmd         = net_ossl_apply_tlscgfcmd;
> > 1199         pIf->osslSetBioCallback         = net_ossl_set_bio_callback;
> > ...
> > 
> > I think rsyslog will probably crash if any functions using that are
> > called.
> > 
> > Is there anyone reading who uses the rsyslog port with TLS who could
> > check runtime?
> > 
> 
> Indeed! Rsyslogd does not crash but it fails to load the lmnsd_ossl module:
> 
> 0985.329403000:main thread    : modules.c: loading module 
> '/usr/local/lib/rsyslog/lmnsd_ossl.so'
> rsyslogd:/usr/local/lib/rsyslog/lmnsd_ossl.so: undefined symbol 
> 'net_ossl_apply_tlscgfcmd'
> 

With the below I could transmit a log message using the ossl module.
I also removed the revision lines from the makefile.

OK?

Remi


--- sysutils/rsyslog/Makefile
+++ sysutils/rsyslog/Makefile
@@ -6,7 +6,7 @@ COMMENT-elasticsearch = Elasticsearch plugin for rsysl
 
 MULTI_PACKAGES =       -main -mysql -normalize -pgsql -elasticsearch
 
-V =                    8.2208.0
+V =                    8.2404.0
 DISTNAME =             rsyslog-$V
 PKGNAME-main =         rsyslog-$V
 PKGNAME-mysql =                rsyslog-mysql-$V
@@ -14,16 +14,9 @@ PKGNAME-normalize =  rsyslog-normalize-$V
 PKGNAME-pgsql =                rsyslog-pgsql-$V
 PKGNAME-elasticsearch =        rsyslog-elasticsearch-$V
 CATEGORIES =           sysutils
-REVISION-elasticsearch =0
-REVISION-main =                0
-REVISION-mysql =       0
-REVISION-normalize =   0
-REVISION-pgsql =       0
 
 HOMEPAGE =             https://www.rsyslog.com/
 
-MAINTAINER =           Remi Locherer <r...@openbsd.org>
-
 # GPLv3+
 PERMIT_PACKAGE =       Yes
 
@@ -32,7 +25,7 @@ COMPILER =            base-clang ports-gcc base-gcc
 WANTLIB-main +=                c crypto curl estr fastjson gcrypt gmp gnutls
 WANTLIB-main +=                gpg-error hogweed iconv idn2 intl m nettle 
nghttp2
 WANTLIB-main +=                p11-kit pthread relp ssl tasn1 unistring uuid z
-WANTLIB-main +=                brotlidec brotlienc execinfo zstd
+WANTLIB-main +=                execinfo nghttp3 ngtcp2 ngtcp2_crypto_quictls
 
 WANTLIB-mysql +=       crypto m mariadb pthread ssl z
 
@@ -41,6 +34,7 @@ WANTLIB-normalize +=  estr fastjson lognorm pthread
 WANTLIB-pgsql +=       crypto m pq pthread ssl
 
 WANTLIB-elasticsearch +=       crypto curl m nghttp2 pthread ssl z
+WANTLIB-elasticsearch +=       nghttp3 ngtcp2 ngtcp2_crypto_quictls
 
 LIB_DEPENDS-main =     devel/libfastjson \
                        devel/libestr \
--- sysutils/rsyslog/distinfo
+++ sysutils/rsyslog/distinfo
@@ -1,2 +1,2 @@
-SHA256 (rsyslog-8.2208.0.tar.gz) = FN5o57jlqwxdc0+C4tyf/yLNf0cQrWkHJ+sQp7mz314=
-SIZE (rsyslog-8.2208.0.tar.gz) = 3262298
+SHA256 (rsyslog-8.2404.0.tar.gz) = MFKNFA7BsfB5IkCB+jffbgZYf/QrAuPmHy2qBSbFTTM=
+SIZE (rsyslog-8.2404.0.tar.gz) = 3408657
--- /dev/null
+++ sysutils/rsyslog/patches/patch-runtime_net_ossl_c
@@ -0,0 +1,46 @@
+LibreSSL does not support SSL_CONF_cmd.
+This is already present in rsyslog master and will most likely ship
+with a future version.
+https://github.com/rsyslog/rsyslog/commit/b79fd513271bdd02d8a37fa4197d2f293aaf6d11
+
+Index: runtime/net_ossl.c
+--- runtime/net_ossl.c.orig
++++ runtime/net_ossl.c
+@@ -59,7 +59,9 @@ void net_ossl_set_ssl_verify_callback(SSL *pSsl, int f
+ void net_ossl_set_ctx_verify_callback(SSL_CTX *pCtx, int flags);
+ void net_ossl_set_bio_callback(BIO *conn);
+ int net_ossl_verify_callback(int status, X509_STORE_CTX *store);
++#if OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(LIBRESSL_VERSION_NUMBER)
+ rsRetVal net_ossl_apply_tlscgfcmd(net_ossl_t *pThis, uchar *tlscfgcmd);
++#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L
+ rsRetVal net_ossl_chkpeercertvalidity(net_ossl_t *pThis, SSL *ssl, uchar 
*fromHostIP);
+ X509* net_ossl_getpeercert(net_ossl_t *pThis, SSL *ssl, uchar *fromHostIP);
+ rsRetVal net_ossl_peerfingerprint(net_ossl_t *pThis, X509* certpeer, uchar 
*fromHostIP);
+@@ -472,6 +474,7 @@ void net_ossl_lastOpenSSLErrorMsg
+       }
+ }
+ 
++#if OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(LIBRESSL_VERSION_NUMBER)
+ /* initialize tls config commands in openssl context
+  */
+ rsRetVal net_ossl_apply_tlscgfcmd(net_ossl_t *pThis, uchar *tlscfgcmd)
+@@ -557,8 +560,8 @@ rsRetVal net_ossl_apply_tlscgfcmd(net_ossl_t *pThis, u
+ finalize_it:
+       RETiRet;
+ }
++#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L
+ 
+-
+ /* Convert a fingerprint to printable data. The  conversion is carried out
+  * according IETF I-D syslog-transport-tls-12. The fingerprint string is
+  * returned in a new cstr object. It is the caller's responsibility to
+@@ -1195,7 +1198,9 @@ CODESTARTobjQueryInterface(net_ossl)
+       pIf->osslPeerfingerprint        = net_ossl_peerfingerprint;
+       pIf->osslGetpeercert            = net_ossl_getpeercert;
+       pIf->osslChkpeercertvalidity    = net_ossl_chkpeercertvalidity;
++#if OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(LIBRESSL_VERSION_NUMBER)
+       pIf->osslApplyTlscgfcmd         = net_ossl_apply_tlscgfcmd;
++#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L
+       pIf->osslSetBioCallback         = net_ossl_set_bio_callback;
+       pIf->osslSetCtxVerifyCallback   = net_ossl_set_ctx_verify_callback;
+       pIf->osslSetSslVerifyCallback   = net_ossl_set_ssl_verify_callback;
--- /dev/null
+++ sysutils/rsyslog/patches/patch-runtime_net_ossl_h
@@ -0,0 +1,18 @@
+LibreSSL does not support SSL_CONF_cmd.
+This is already present in rsyslog master and will most likely ship
+with a future version.
+https://github.com/rsyslog/rsyslog/commit/b79fd513271bdd02d8a37fa4197d2f293aaf6d11
+
+Index: runtime/net_ossl.h
+--- runtime/net_ossl.h.orig
++++ runtime/net_ossl.h
+@@ -88,7 +88,9 @@ BEGINinterface(net_ossl) /* name must also be changed 
+       rsRetVal (*osslPeerfingerprint)(net_ossl_t *pThis, X509* certpeer, 
uchar *fromHostIP);
+       X509* (*osslGetpeercert)(net_ossl_t *pThis, SSL *ssl, uchar 
*fromHostIP);
+       rsRetVal (*osslChkpeercertvalidity)(net_ossl_t *pThis, SSL *ssl, uchar 
*fromHostIP);
++#if OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(LIBRESSL_VERSION_NUMBER)
+       rsRetVal (*osslApplyTlscgfcmd)(net_ossl_t *pThis, uchar *tlscfgcmd);
++#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L
+       void (*osslSetBioCallback)(BIO *conn);
+       void (*osslSetCtxVerifyCallback)(SSL_CTX *pCtx, int flags);
+       void (*osslSetSslVerifyCallback)(SSL *pSsl, int flags);

Reply via email to