From c2287156f82b50e1ab0a7339ff9608ddd89c9cdc8ac8eaf0a8d4e41faa8150e6 Mon Sep 17 00:00:00 2001 From: Alexei Sorokin Date: Fri, 9 Jul 2021 13:16:31 +0000 Subject: [PATCH] Accepting request 905188 from home:polslinux:branches:network:pidgin - Update to 2.14.6: General: * Update references to point to our current websites. * Add a donate link to the help menu. Finch: * Check pkg-config for ncurses before looking for it manually. Pidgin: * Replace newlines in topics with spaces. libpurple: * Added support for the no_proxy environment variable. * Added infrastructure for fuzzing as well as some initial fuzzers. * Fix an out of bounds write in purple_markup_linkify. XMPP: * Enable session management after binding a resource. Zephyr: * Fix a clang logical-not-parentheses warning. - Drop pidgin-add-no_proxy-support.patch OBS-URL: https://build.opensuse.org/request/show/905188 OBS-URL: https://build.opensuse.org/package/show/network:pidgin/pidgin?expand=0&rev=49 --- pidgin-2.14.5.tar.bz2 | 3 - pidgin-2.14.5.tar.bz2.asc | 16 -- pidgin-2.14.6.tar.bz2 | 3 + pidgin-2.14.6.tar.bz2.asc | 16 ++ pidgin-add-no_proxy-support.patch | 305 ------------------------------ pidgin.changes | 21 ++ pidgin.spec | 5 +- 7 files changed, 41 insertions(+), 328 deletions(-) delete mode 100644 pidgin-2.14.5.tar.bz2 delete mode 100644 pidgin-2.14.5.tar.bz2.asc create mode 100644 pidgin-2.14.6.tar.bz2 create mode 100644 pidgin-2.14.6.tar.bz2.asc delete mode 100644 pidgin-add-no_proxy-support.patch diff --git a/pidgin-2.14.5.tar.bz2 b/pidgin-2.14.5.tar.bz2 deleted file mode 100644 index 9a20172..0000000 --- a/pidgin-2.14.5.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:26db80d2a3c1e740952757bd53c15b8fc8dd780dc8819a74b53b2ef3bfaf041f -size 8696780 diff --git a/pidgin-2.14.5.tar.bz2.asc b/pidgin-2.14.5.tar.bz2.asc deleted file mode 100644 index 68b539a..0000000 --- a/pidgin-2.14.5.tar.bz2.asc +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQIzBAABCgAdFiEEQN4dxyiP4/UKuTjFSPZq/9m9tykFAmC5iMEACgkQSPZq/9m9 -tylBRg//QKCKyBSWr9wHvir7fEsh8VmobmEOuvrB9P0NpNAmag5rJ4SGze0tb9y3 -EN0W4lAdkqY8WVjRYxK5eI/wMspY2jkcxR5LfS7ELonChJZiVRB8476Ewas9M1wA -BpWKf+kcxgxwu6slGenBMpJcWkq6gCWqYkmDVFv7gGW4aA6f9E5RpEXbd0rRt3qt -+GKWwbtMeDOmJ+P21FWSqqhc5DzNawky2bMRRfA2q/M+AK0uECyh56eEcaStm05d -l12ZyCtaq25nWmkO4W0YG6/BRjfeba8eDlPmScl1PMsgbZtYkVv0dO3gy8o0Erdv -zHi+87iOobnB3aqiFV6QGaVBbnUHEa/92jn4EwEOPTe+yHr8HxH6J62H/mRDi2hl -1DI2ZKdZMg9qI4/yRTkPypA6HHtlQuJZ4bN1O5q8pi+vYnzZ/9fOcqGVW9Pdv8S9 -YQZxqzQL8htPBHosHqX/JAJE3DdupvVJceF6DF/m8GkIv7pe+LF3h3h9uJJjagy2 -rSU47m8ZYozmj62RJ27YaVaf7rIHFeXQqr9tfyEzrdbQklIPPfTFK319jAgxGxFD -kiV2ymNbnPVh1apXGs+58k5kgcdx61bfMqXBhmo38tteX+/OtSB/czfvkEXpoaXb -TwHsU+fzPVSnCdp7iE/R7cyanUqZIWE37msjoMj0g23BKbmxkww= -=QWEa ------END PGP SIGNATURE----- diff --git a/pidgin-2.14.6.tar.bz2 b/pidgin-2.14.6.tar.bz2 new file mode 100644 index 0000000..308848c --- /dev/null +++ b/pidgin-2.14.6.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb45f7c032f9efd6922a5dbf2840995775e5584771b23992d04f6eff7dff5336 +size 8672222 diff --git a/pidgin-2.14.6.tar.bz2.asc b/pidgin-2.14.6.tar.bz2.asc new file mode 100644 index 0000000..5362bd5 --- /dev/null +++ b/pidgin-2.14.6.tar.bz2.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEEQN4dxyiP4/UKuTjFSPZq/9m9tykFAmDnvCMACgkQSPZq/9m9 +tymcDg//QjWSPjUBlMEdWOANl0E4GSkyH5G3d6BpJujR3HdDS0IrLm5RXeyR//q4 +Nrgi9qT9TyZ+jmm8f55XxI7gBBL5CFev1o8Q+QnHVftDal29jAki5NzbYuTsjHJc +REH0KnJLSPtVrZyoy7BKSURUfnr1p4UZa54ahLhvCTcaPjghGw4lQh8SvB+eXkhD +YoH5l+r+bJdVQx2e4GGOHH5zYO/LH2EGYb6dBQWH/ogdomn9IC82K4g3QNc0dYmj +K4OO2Oq8hPhM0Yp3X/DjrpKOQmmVAX1Zo+akdz1WgIbHPuudrVLalNZTmKXFpZk1 +EmXAQZ6igdTFUdgsz+L9rlaGG0vBI839XsZbtC4Ev3MiIqJbogR+/CYeJ4i+4jrc +Zr3SmEuizb2fUSZVL/siQSUwvl7EhWawJSY3r36YfoaI335ZPqEZMXswLnRCwrh5 +0zWQEd/8W/rdy+ss5myYubNOP9JSptJN/94drOK7V+KKfvZGB1qKjGqCt90mjMXW +2R2L9KNokWD+38sHxlQ2yyzcIT/LWkNnpWx++FUvx+Z3AygXO8KQ29/8YFZH3rJi +NbZKFIASKSN9qXdzn/+ONl4MEAtR+V8DCR0kn1l2rydTjyNRsMR4ewSx+CZ9QK8B +VRxOt9NQKOPeebqlSdXH5CM6LHNwEv82TRrogtx9JvYuJelJPQE= +=U/1t +-----END PGP SIGNATURE----- diff --git a/pidgin-add-no_proxy-support.patch b/pidgin-add-no_proxy-support.patch deleted file mode 100644 index 304e343..0000000 --- a/pidgin-add-no_proxy-support.patch +++ /dev/null @@ -1,305 +0,0 @@ -diff --unified --recursive --text --new-file --color pidgin-2.14.5.old/ChangeLog pidgin-2.14.5.new/ChangeLog ---- pidgin-2.14.5.old/ChangeLog 2021-06-24 14:17:08.444727946 +0800 -+++ pidgin-2.14.5.new/ChangeLog 2021-06-24 14:17:17.098045115 +0800 -@@ -103,6 +103,10 @@ - Bonjour: - * Always use port fallback for IPv4 addresses. (PR #382 Michael Osborne) - -+ libpurple: -+ * added support for the no_proxy environment variable. (PIDGIN-17518) -+ (RR #667) (Alynx Zhou and Gary Kramlich) -+ - XMPP: - * Support for XEP-0198 Stream Management (PR #309 defanor) - * Decrease delay for file transfer using streamhosts (PR #464 #627 Evert -diff --unified --recursive --text --new-file --color pidgin-2.14.5.old/COPYRIGHT pidgin-2.14.5.new/COPYRIGHT ---- pidgin-2.14.5.old/COPYRIGHT 2021-06-24 14:17:08.438061292 +0800 -+++ pidgin-2.14.5.new/COPYRIGHT 2021-06-24 14:17:17.098045115 +0800 -@@ -651,6 +651,7 @@ - Jan Zachorowski - zelch - Nickolai Zeldovich -+Alynx Zhou - Tom Zickel - Marco Ziech - Piotr Zielinski -diff --unified --recursive --text --new-file --color pidgin-2.14.5.old/libpurple/proxy.c pidgin-2.14.5.new/libpurple/proxy.c ---- pidgin-2.14.5.old/libpurple/proxy.c 2021-06-24 14:17:08.454727928 +0800 -+++ pidgin-2.14.5.new/libpurple/proxy.c 2021-06-24 14:17:17.098045115 +0800 -@@ -90,6 +90,12 @@ - - static PurpleProxyInfo *global_proxy_info = NULL; - -+typedef struct { -+ gchar *hostname; -+ gint port; -+} PurpleProxyNoProxyEntry; -+static GList *no_proxy_entries = NULL; -+ - static GSList *handles = NULL; - - static void try_connect(PurpleProxyConnectData *connect_data); -@@ -205,6 +211,118 @@ - } - - /************************************************************************** -+ * no proxy helpers -+ **************************************************************************/ -+static PurpleProxyNoProxyEntry * -+purple_proxy_no_proxy_entry_new(const gchar *hostname, gint port) { -+ PurpleProxyNoProxyEntry *entry = NULL; -+ -+ entry = g_new(PurpleProxyNoProxyEntry, 1); -+ entry->hostname = g_strdup(hostname); -+ entry->port = port; -+ -+ return entry; -+} -+ -+static void -+purple_proxy_no_proxy_entry_free(PurpleProxyNoProxyEntry *entry) { -+ g_free(entry->hostname); -+ g_free(entry); -+} -+ -+static gint -+purple_proxy_no_proxy_compare(gconstpointer a, gconstpointer b) { -+ const PurpleProxyNoProxyEntry *entry, *connection; -+ -+ entry = (const PurpleProxyNoProxyEntry *)a; -+ connection = (const PurpleProxyNoProxyEntry *)b; -+ -+ /* check port first as it's quicker */ -+ if(entry->port != 0 && entry->port != connection->port) { -+ return -1; -+ } -+ -+ /* * is used to match any host, but this check needs to be after the port -+ * because *:6667 is a valid entry. -+ */ -+ if(purple_strequal(entry->hostname, "*")) { -+ return 0; -+ } -+ -+ /* if the host name matches, don't proxy it */ -+ if(purple_strequal(connection->hostname, entry->hostname)) { -+ return 0; -+ } -+ -+ /* finally check if the requested host has a known suffix */ -+ if(g_str_has_suffix(connection->hostname, entry->hostname)) { -+ size_t clen = strlen(connection->hostname); -+ size_t elen = strlen(entry->hostname); -+ -+ /* make sure the connection hostname has at least one more character -+ * than the entry so that we don't do an out of bound read. -+ */ -+ if(clen > elen) { -+ if(connection->hostname[clen - elen - 1] == '.') { -+ return 0; -+ } -+ } -+ } -+ -+ return -1; -+} -+ -+static void -+parse_no_proxy_list(const gchar *no_proxy) { -+ gchar **items; -+ gint i; -+ -+ g_return_if_fail(no_proxy != NULL); -+ g_return_if_fail(no_proxy_entries == NULL); -+ -+ /* The no_proxy value is comma separated */ -+ items = g_strsplit(no_proxy, ",", -1); -+ -+ for(i = 0; items[i] != NULL; i++) { -+ PurpleProxyNoProxyEntry *entry = NULL; -+ gchar *hostname = NULL; -+ gchar *s_port = NULL; -+ gint port = 0; -+ -+ s_port = g_strstr_len(items[i], -1, ":"); -+ if(s_port != NULL && *s_port + 1 != '\0') { -+ /* read the port starting with the next character */ -+ port = atoi(s_port + 1); -+ -+ /* since we're done with the port, now turn item into a null -+ * terminated string of just the hostname. -+ */ -+ *s_port = '\0'; -+ } -+ -+ /* items[i] is currently either the original or with :port removed */ -+ hostname = items[i]; -+ -+ g_strstrip(hostname); -+ -+ /* finally remove any leading .'s from hostname */ -+ while(hostname[0] == '.') { -+ hostname += 1; -+ } -+ -+ if(*hostname == '\0') { -+ continue; -+ } -+ -+ /* finally add the new entry to the list */ -+ entry = purple_proxy_no_proxy_entry_new(hostname, port); -+ no_proxy_entries = g_list_prepend(no_proxy_entries, entry); -+ } -+ -+ g_strfreev(items); -+} -+ -+/************************************************************************** - * Global Proxy API - **************************************************************************/ - PurpleProxyInfo * -@@ -2312,6 +2430,8 @@ - const char *connecthost = host; - int connectport = port; - PurpleProxyConnectData *connect_data; -+ PurpleProxyNoProxyEntry entry; -+ GList *found = NULL; - - g_return_val_if_fail(host != NULL, NULL); - g_return_val_if_fail(port > 0, NULL); -@@ -2325,9 +2445,31 @@ - connect_data->data = data; - connect_data->host = g_strdup(host); - connect_data->port = port; -- connect_data->gpi = purple_proxy_get_setup(account); - connect_data->account = account; - -+ /* Check if the hostname:port matches anything in the no_proxy environment -+ * variable to determine if this connection should be proxied or not. -+ */ -+ entry.hostname = connect_data->host; -+ entry.port = connect_data->port; -+ found = g_list_find_custom(no_proxy_entries, &entry, -+ purple_proxy_no_proxy_compare); -+ -+ if(found != NULL) { -+ purple_debug_info( -+ "proxy", -+ "directly connecting to %s:%d because it matched the no_proxy " -+ "environment variable.\n", -+ connect_data->host, -+ connect_data->port -+ ); -+ -+ connect_data->gpi = purple_proxy_info_new(); -+ purple_proxy_info_set_type(connect_data->gpi, PURPLE_PROXY_NONE); -+ } else { -+ connect_data->gpi = purple_proxy_get_setup(account); -+ } -+ - if ((purple_proxy_info_get_type(connect_data->gpi) != PURPLE_PROXY_NONE) && - (purple_proxy_info_get_host(connect_data->gpi) == NULL || - purple_proxy_info_get_port(connect_data->gpi) <= 0)) { -@@ -2380,6 +2522,8 @@ - const char *connecthost = host; - int connectport = port; - PurpleProxyConnectData *connect_data; -+ PurpleProxyNoProxyEntry entry; -+ GList *found; - - g_return_val_if_fail(host != NULL, NULL); - g_return_val_if_fail(port > 0, NULL); -@@ -2393,9 +2537,27 @@ - connect_data->data = data; - connect_data->host = g_strdup(host); - connect_data->port = port; -- connect_data->gpi = purple_proxy_get_setup(account); - connect_data->account = account; - -+ entry.hostname = connect_data->host; -+ entry.port = connect_data->port; -+ found = g_list_find_custom(no_proxy_entries, &entry, -+ purple_proxy_no_proxy_compare); -+ if(found != NULL) { -+ purple_debug_info( -+ "proxy", -+ "directly connecting to %s:%d because it matched the no_proxy " -+ "environment variable.\n", -+ connect_data->host, -+ connect_data->port -+ ); -+ -+ connect_data->gpi = purple_proxy_info_new(); -+ purple_proxy_info_set_type(connect_data->gpi, PURPLE_PROXY_NONE); -+ } else { -+ connect_data->gpi = purple_proxy_get_setup(account); -+ } -+ - if ((purple_proxy_info_get_type(connect_data->gpi) != PURPLE_PROXY_NONE) && - (purple_proxy_info_get_host(connect_data->gpi) == NULL || - purple_proxy_info_get_port(connect_data->gpi) <= 0)) { -@@ -2613,6 +2775,55 @@ - purple_proxy_init(void) - { - void *handle; -+ const gchar *no_proxy_value = NULL; -+ -+ /* -+ * See Standardizing no_proxy in for this patch. -+ */ -+ no_proxy_value = g_getenv("no_proxy"); -+ if(no_proxy_value == NULL) { -+ no_proxy_value = g_getenv("NO_PROXY"); -+ } -+ -+ if(no_proxy_value != NULL) { -+ /* -+ * Some test cases (when we are connecting to libera with SOCKS5 on port -+ * 6667): -+ * -+ * Use proxy because empty list. -+ * $ no_proxy= pidgin --debug -+ * -+ * Ignore the leading ., match suffix and skip proxy. -+ * $ no_proxy=.libera.chat:6667 pidgin --debug -+ * -+ * Treat empty port as unspecified and skip proxy. -+ * $ no_proxy=libera.chat: pidgin --debug -+ * -+ * Ignore the first empty element and skip proxy. -+ * $ no_proxy=,libera.chat:6667 pidgin --debug -+ * -+ * Should not work with empty host, if you want to skip proxy for -+ * all hosts with a specific port please see next example. -+ * $ no_proxy=:6667 pidgin --debug -+ * -+ * Should skip proxy. -+ * $ no_proxy="*:6667" pidgin --debug -+ * -+ * Should NOT skip proxy. -+ * $ no_proxy="*:6669" pidgin --debug -+ * -+ * Should skip proxy. -+ * $ no_proxy="*" pidgin --debug -+ */ -+ -+ parse_no_proxy_list(no_proxy_value); -+ -+ purple_debug_info("proxy", -+ "Found no_proxy envrionment variable ('%s')\n", -+ no_proxy_value); -+ purple_debug_info("proxy", "Loaded %d no_proxy exceptions\n", -+ g_list_length(no_proxy_entries)); -+ } - - /* Initialize a default proxy info struct. */ - global_proxy_info = purple_proxy_info_new(); -@@ -2660,4 +2871,8 @@ - - purple_proxy_info_destroy(global_proxy_info); - global_proxy_info = NULL; -+ -+ g_list_free_full(no_proxy_entries, -+ (GDestroyNotify)purple_proxy_no_proxy_entry_free); -+ no_proxy_entries = NULL; - } diff --git a/pidgin.changes b/pidgin.changes index aa9625e..ab51e63 100644 --- a/pidgin.changes +++ b/pidgin.changes @@ -1,3 +1,24 @@ +------------------------------------------------------------------- +Fri Jul 9 07:40:54 UTC 2021 - Paolo Stivanin + +- Update to 2.14.6: + General: + * Update references to point to our current websites. + * Add a donate link to the help menu. + Finch: + * Check pkg-config for ncurses before looking for it manually. + Pidgin: + * Replace newlines in topics with spaces. + libpurple: + * Added support for the no_proxy environment variable. + * Added infrastructure for fuzzing as well as some initial fuzzers. + * Fix an out of bounds write in purple_markup_linkify. + XMPP: + * Enable session management after binding a resource. + Zephyr: + * Fix a clang logical-not-parentheses warning. +- Drop pidgin-add-no_proxy-support.patch + ------------------------------------------------------------------- Thu Jun 24 06:24:45 UTC 2021 - Alynx Zhou diff --git a/pidgin.spec b/pidgin.spec index 8e7f131..ae4b482 100644 --- a/pidgin.spec +++ b/pidgin.spec @@ -18,7 +18,7 @@ %define _name Pidgin Name: pidgin -Version: 2.14.5 +Version: 2.14.6 Release: 0 Summary: Multiprotocol Instant Messaging Client License: GPL-2.0-only @@ -38,8 +38,6 @@ Patch2: pidgin-fix-perl-build.patch Patch3: pidgin-use-default-alsa.patch # PATCH-FIX-OPENSUSE pidgin-always-enable-intltool.patch mgorse@suse.com -- always enable intltool, needed for autoconf 2.71. Patch4: pidgin-always-enable-intltool.patch -# PATCH-FEATURE-UPSTREAM pidgin-add-no_proxy-support.patch jsc#SLE-17111 pidgin.im#17518 alynx.zhou@suse.com -- add support for no_proxy env. -Patch5: pidgin-add-no_proxy-support.patch BuildRequires: ca-certificates-mozilla BuildRequires: doxygen BuildRequires: fdupes @@ -224,7 +222,6 @@ translation-update-upstream %patch3 -p1 %endif %patch4 -p1 -%patch5 -p1 cp -f %{SOURCE3} %{name}-prefs.xml