diff options
author | wiz <wiz@pkgsrc.org> | 2021-01-25 23:10:00 +0000 |
---|---|---|
committer | wiz <wiz@pkgsrc.org> | 2021-01-25 23:10:00 +0000 |
commit | 108361685c2366a0a441cef5729cb79cca7da450 (patch) | |
tree | 0f64de1581728fc8b6768fed897cef9b759e87de | |
parent | cd88c433954dab0b00d7a13f7efca40f532de75d (diff) | |
download | pkgsrc-108361685c2366a0a441cef5729cb79cca7da450.tar.gz |
loudmouth: update to 1.5.4.
This is a bug fix release.
-rw-r--r-- | chat/loudmouth/Makefile | 8 | ||||
-rw-r--r-- | chat/loudmouth/PLIST | 22 | ||||
-rw-r--r-- | chat/loudmouth/distinfo | 12 | ||||
-rw-r--r-- | chat/loudmouth/patches/patch-loudmouth_lm-resolver.c | 18 | ||||
-rw-r--r-- | chat/loudmouth/patches/patch-loudmouth_lm-ssl-openssl.c | 170 |
5 files changed, 11 insertions, 219 deletions
diff --git a/chat/loudmouth/Makefile b/chat/loudmouth/Makefile index 9f8154e2dbb..948f81be1a5 100644 --- a/chat/loudmouth/Makefile +++ b/chat/loudmouth/Makefile @@ -1,7 +1,6 @@ -# $NetBSD: Makefile,v 1.51 2021/01/23 09:08:07 wiz Exp $ +# $NetBSD: Makefile,v 1.52 2021/01/25 23:10:00 wiz Exp $ -DISTNAME= loudmouth-1.5.3 -PKGREVISION= 3 +DISTNAME= loudmouth-1.5.4 CATEGORIES= chat MASTER_SITES= https://mcabber.com/files/loudmouth/ EXTRACT_SUFX= .tar.bz2 @@ -20,6 +19,9 @@ CONFIGURE_ARGS+= --with-ssl=openssl PKGCONFIG_OVERRIDE+= loudmouth-1.0.pc.in +# https://github.com/mcabber/loudmouth/issues/42 +BUILDLINK_TRANSFORM+= rm:-Werror + .include "../../converters/libiconv/buildlink3.mk" .include "../../devel/glib2/buildlink3.mk" .include "../../security/openssl/buildlink3.mk" diff --git a/chat/loudmouth/PLIST b/chat/loudmouth/PLIST index 4aba0d8bb01..56fcc9b8ba4 100644 --- a/chat/loudmouth/PLIST +++ b/chat/loudmouth/PLIST @@ -1,4 +1,4 @@ -@comment $NetBSD: PLIST,v 1.5 2016/09/19 17:13:18 jperkin Exp $ +@comment $NetBSD: PLIST,v 1.6 2021/01/25 23:10:00 wiz Exp $ include/loudmouth-1.0/loudmouth/lm-connection.h include/loudmouth-1.0/loudmouth/lm-error.h include/loudmouth-1.0/loudmouth/lm-message-handler.h @@ -10,23 +10,3 @@ include/loudmouth-1.0/loudmouth/lm-utils.h include/loudmouth-1.0/loudmouth/loudmouth.h lib/libloudmouth-1.la lib/pkgconfig/loudmouth-1.0.pc -share/gtk-doc/html/loudmouth/ch01.html -share/gtk-doc/html/loudmouth/home.png -share/gtk-doc/html/loudmouth/index.html -share/gtk-doc/html/loudmouth/index.sgml -share/gtk-doc/html/loudmouth/left-insensitive.png -share/gtk-doc/html/loudmouth/left.png -share/gtk-doc/html/loudmouth/loudmouth-LmConnection.html -share/gtk-doc/html/loudmouth/loudmouth-LmError.html -share/gtk-doc/html/loudmouth/loudmouth-LmMessage.html -share/gtk-doc/html/loudmouth/loudmouth-LmMessageHandler.html -share/gtk-doc/html/loudmouth/loudmouth-LmMessageNode.html -share/gtk-doc/html/loudmouth/loudmouth-LmProxy.html -share/gtk-doc/html/loudmouth/loudmouth-LmSSL.html -share/gtk-doc/html/loudmouth/loudmouth-Miscellaneous-Utility-Functions.html -share/gtk-doc/html/loudmouth/loudmouth.devhelp2 -share/gtk-doc/html/loudmouth/right-insensitive.png -share/gtk-doc/html/loudmouth/right.png -share/gtk-doc/html/loudmouth/style.css -share/gtk-doc/html/loudmouth/up-insensitive.png -share/gtk-doc/html/loudmouth/up.png diff --git a/chat/loudmouth/distinfo b/chat/loudmouth/distinfo index 601e040f617..ccbbb74ca5f 100644 --- a/chat/loudmouth/distinfo +++ b/chat/loudmouth/distinfo @@ -1,8 +1,6 @@ -$NetBSD: distinfo,v 1.22 2021/01/23 09:08:07 wiz Exp $ +$NetBSD: distinfo,v 1.23 2021/01/25 23:10:00 wiz Exp $ -SHA1 (loudmouth-1.5.3.tar.bz2) = a69ef9a57e0ae993340921e73ada27979850db04 -RMD160 (loudmouth-1.5.3.tar.bz2) = aba3fc803a87e334b09987e27a5f841a46761dd8 -SHA512 (loudmouth-1.5.3.tar.bz2) = ab6b16b4e644b69cdb7d8df1753d1bb5b43c2f1e76944e639339169b332e1b5c6a4246053c5b8a579ee9b53c845cef610b0040dfdffeb857180b6bab71adfcce -Size (loudmouth-1.5.3.tar.bz2) = 375974 bytes -SHA1 (patch-loudmouth_lm-resolver.c) = c16eb618dded2158bceac511a96c0b7535177b80 -SHA1 (patch-loudmouth_lm-ssl-openssl.c) = 0aa1d4795579881b2633e620ff4267e78ea478fb +SHA1 (loudmouth-1.5.4.tar.bz2) = b105bfebbbb9e24c3afc4a48b2fe4c40be4ef62f +RMD160 (loudmouth-1.5.4.tar.bz2) = 689e9055a8f675afdef624a0ab4c26f45d3f5277 +SHA512 (loudmouth-1.5.4.tar.bz2) = 49a08f0130b9ee56f07586d244504c81242723865a136b03e1049f32b1aa1e6c49e9b76b38f0cfb812ef4c66f73b7d83914a58e9a93e0496207e06c2b5efa9d8 +Size (loudmouth-1.5.4.tar.bz2) = 361323 bytes diff --git a/chat/loudmouth/patches/patch-loudmouth_lm-resolver.c b/chat/loudmouth/patches/patch-loudmouth_lm-resolver.c deleted file mode 100644 index 31e4a9f75a6..00000000000 --- a/chat/loudmouth/patches/patch-loudmouth_lm-resolver.c +++ /dev/null @@ -1,18 +0,0 @@ -$NetBSD: patch-loudmouth_lm-resolver.c,v 1.2 2020/06/29 23:35:51 gutteridge Exp $ - -Fix a build breakage on non-x86 NetBSD architectures where arpa/ -nameser_compat.h was being unnecessarily included (without additional -dependent macros being defined, as nameser.h takes care of when it's -included first). https://github.com/mcabber/loudmouth/pull/39 - ---- loudmouth/lm-resolver.c.orig 2016-02-14 17:05:11.000000000 +0000 -+++ loudmouth/lm-resolver.c -@@ -21,7 +21,7 @@ - #include <string.h> - - /* Needed on Mac OS X */ --#if HAVE_ARPA_NAMESER_COMPAT_H -+#if defined(__APPLE__) && HAVE_ARPA_NAMESER_COMPAT_H - #include <arpa/nameser_compat.h> - #endif - diff --git a/chat/loudmouth/patches/patch-loudmouth_lm-ssl-openssl.c b/chat/loudmouth/patches/patch-loudmouth_lm-ssl-openssl.c deleted file mode 100644 index 0bb13bdb9ae..00000000000 --- a/chat/loudmouth/patches/patch-loudmouth_lm-ssl-openssl.c +++ /dev/null @@ -1,170 +0,0 @@ -$NetBSD: patch-loudmouth_lm-ssl-openssl.c,v 1.1 2021/01/23 09:08:07 wiz Exp $ - -From 792d8bd529f5dc0577dcc28c5f31b6a437d970fa Mon Sep 17 00:00:00 2001 -From: tmp170422 <tmp131110@ya.ru> -Date: Sat, 22 Apr 2017 18:30:57 +0300 -Subject: [PATCH] Fix an issue with wildcard domain names in CN - -When CN contains wildcards, the SAN list would be checked against corrupt server name. ---- - loudmouth/lm-ssl-openssl.c | 121 +++++++++++++++++++++---------------- - 1 file changed, 69 insertions(+), 52 deletions(-) - -https://github.com/mcabber/loudmouth/commit/792d8bd529f5dc0577dcc28c5f31b6a437d970fa.patch - -with a manual compilation fix (missing ')') - ---- loudmouth/lm-ssl-openssl.c.orig 2016-02-14 17:05:11.000000000 +0000 -+++ loudmouth/lm-ssl-openssl.c -@@ -118,11 +118,35 @@ ssl_verify_cb (int preverify_ok, X509_ST - return 1; - } - -+static gboolean -+ssl_match_domain_name (const gchar *server, const gchar *domain) -+{ -+ if (domain[0]=='*' && domain[1]=='.') { -+ /* leftmost part wildcard */ -+ ++domain; -+ -+ if (strchr(domain, '*') != NULL) { -+ /* multiple wildcards not allowed */ -+ return FALSE; -+ } -+ -+ server = strchr(server, '.'); /* eat the leftmost part */ -+ if (server == NULL) { -+ return FALSE; -+ } -+ -+ /* fall thru for wildcard match */ -+ } -+ -+ return (!strcasecmp(server, domain)); -+} -+ - /* side effect: fills the ssl->fingerprint buffer */ - static gboolean - ssl_verify_certificate (LmSSL *ssl, const gchar *server) - { - gboolean retval = TRUE; -+ gboolean match_result = FALSE; - LmSSLBase *base; - long verify_res; - int rc; -@@ -219,70 +243,63 @@ ssl_verify_certificate (LmSSL *ssl, cons - - /* FWB: deprecated call, can only get first entry */ - if (X509_NAME_get_text_by_NID(crt_subj, NID_commonName, cn, LM_SSL_CN_MAX) > 0) { -- gchar *domain = cn; - - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SSL, - "%s: server = '%s', cn = '%s'\n", - __FILE__, server, cn); - -- if (domain != NULL) { -- -- if ((cn[0] == '*') && (cn[1] == '.')) { -- /* -- * FWB: huh? ever tested? -- * server="sub.domain.tld"; -- * cn="*.domain.tld"; -- * domain=strstr(cn, server); ??? -- */ -- /* domain = strstr (cn, server); */ -- server = strchr(server, '.') + 1; -- domain = cn + 2; -- } -- -- if (strncasecmp (server, domain, LM_SSL_CN_MAX) != 0) { -- /* FWB: CN doesn't match, try SANs */ -- int subject_alt_names_nb = -1; -- int san_result = 0; -- int san_counter; -- STACK_OF(GENERAL_NAME) *subject_alt_names = NULL; -- -- /* g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SSL, "%s: CN does not match server name\n", __FILE__); */ -- // Try to extract the names within the SAN extension from the certificate -- subject_alt_names = X509_get_ext_d2i((X509 *) srv_crt, NID_subject_alt_name, NULL, NULL); -- if (subject_alt_names != NULL) { -- -- // Check each name within the extension -- subject_alt_names_nb = sk_GENERAL_NAME_num(subject_alt_names); -- for (san_counter=0; san_counter<subject_alt_names_nb; san_counter++) { -- const GENERAL_NAME *current_name = sk_GENERAL_NAME_value(subject_alt_names, san_counter); -- if (current_name->type == GEN_DNS) { -- // Current name is a DNS name, let's check it, it's ASCII -- if (strcasecmp(server, (char *)current_name->d.dNSName->data) == 0) { -- g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SSL, "%s: found SAN '%s' - MATCH\n", __FILE__, current_name->d.dNSName->data); -- san_result = 1; /* break; */ -- } else { -- g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SSL, "%s: found SAN '%s'\n", __FILE__, current_name->d.dNSName->data); -- } -- } -- } -- -- } -- sk_GENERAL_NAME_pop_free(subject_alt_names, GENERAL_NAME_free); -- if (!san_result) goto cn_and_san_mismatch; -- } /* SAN */ -+ if (cn != NULL && ssl_match_domain_name(server, cn)) { -+ match_result = TRUE; - } else { -- cn_and_san_mismatch: -- if (base->func (ssl, -- LM_SSL_STATUS_CERT_HOSTNAME_MISMATCH, -- base->func_data) != LM_SSL_RESPONSE_CONTINUE) { -- retval = FALSE; -- } -+ /* g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SSL, "%s: CN does not match server name\n", __FILE__); */ - } - } else { - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SSL, - "X509_NAME_get_text_by_NID() failed"); - } - -+ /* RFC6125: "...However, it is perfectly acceptable for the subject field to be empty, -+ * as long as the certificate contains a subject alternative name ("subjectAltName") -+ * extension that includes at least one subjectAltName entry" -+ */ -+ if (!match_result) { -+ /* FWB: CN doesn't match, try SANs */ -+ int subject_alt_names_nb = -1; -+ int san_counter; -+ STACK_OF(GENERAL_NAME) *subject_alt_names = NULL; -+ -+ // Try to extract the names within the SAN extension from the certificate -+ subject_alt_names = X509_get_ext_d2i((X509 *) srv_crt, NID_subject_alt_name, NULL, NULL); -+ if (subject_alt_names != NULL) { -+ -+ // Check each name within the extension -+ subject_alt_names_nb = sk_GENERAL_NAME_num(subject_alt_names); -+ for (san_counter=0; san_counter<subject_alt_names_nb; san_counter++) { -+ const GENERAL_NAME *current_name = sk_GENERAL_NAME_value(subject_alt_names, san_counter); -+ if (current_name->type == GEN_DNS) { -+ // Current name is a DNS name, let's check it, it's ASCII -+ if (ssl_match_domain_name(server, (const char *)current_name->d.dNSName->data)) { -+ g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SSL, "%s: found SAN '%s' - MATCH\n", __FILE__, current_name->d.dNSName->data); -+ match_result = TRUE; /* break; */ -+ } else { -+ g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SSL, "%s: found SAN '%s'\n", __FILE__, current_name->d.dNSName->data); -+ } -+ } -+ } -+ -+ } -+ -+ sk_GENERAL_NAME_pop_free(subject_alt_names, GENERAL_NAME_free); -+ } -+ -+ if (!match_result) { -+ if (base->func (ssl, -+ LM_SSL_STATUS_CERT_HOSTNAME_MISMATCH, -+ base->func_data) != LM_SSL_RESPONSE_CONTINUE) { -+ retval = FALSE; -+ } -+ } -+ - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SSL, - "%s:\n\tIssuer: %s\n\tSubject: %s\n\tFor: %s\n", - __FILE__, |