Hello community, here is the log from the commit of package irssi for openSUSE:Factory checked in at 2017-10-23 16:52:24 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/irssi (Old) and /work/SRC/openSUSE:Factory/.irssi.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "irssi" Mon Oct 23 16:52:24 2017 rev:47 rq:535800 version:1.0.5 Changes: -------- --- /work/SRC/openSUSE:Factory/irssi/irssi.changes 2017-07-08 12:35:51.982039365 +0200 +++ /work/SRC/openSUSE:Factory/.irssi.new/irssi.changes 2017-10-23 16:52:56.529666656 +0200 @@ -1,0 +2,25 @@ +Sun Oct 22 13:46:51 UTC 2017 - [email protected] + +- update to 1.0.5 (boo#1064540) + - Fix missing -sasl_method '' in /NETWORK (#718, #719). + - Fix incorrect restoration of term state when hitting SUSP + inside screen (#737, #733). + - Fix out of bounds read when compressing colour + sequences. Found by Hanno Böck (GL#12, GL!18). CVE-2017-15228 + - Fix use after free condition during a race condition when + waiting on channel sync during a rejoin (GL#13, GL!19). + CVE-2017-15227 + - Fix null pointer dereference when parsing certain malformed + CTCP DCC messages (GL#14, GL!20). + CVE-2017-15721 + - Fix crash due to null pointer dereference when failing to + split messages due to overlong nick or target (GL#15, GL!21). + CVE-2017-15723 + - Fix out of bounds read when trying to skip a safe channel ID + without verifying that the ID is long enough (GL#16, GL!22). + CVE-2017-15722 + - Fix return of random memory when inet_ntop failed (#769). + - Minor statusbar help update. By Robert Bisewski (#758, + #763). + +------------------------------------------------------------------- Old: ---- irssi-1.0.4.tar.xz irssi-1.0.4.tar.xz.asc New: ---- irssi-1.0.5.tar.xz irssi-1.0.5.tar.xz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ irssi.spec ++++++ --- /var/tmp/diff_new_pack.8HpLH2/_old 2017-10-23 16:52:57.301630527 +0200 +++ /var/tmp/diff_new_pack.8HpLH2/_new 2017-10-23 16:52:57.305630340 +0200 @@ -18,13 +18,13 @@ %bcond_with socks Name: irssi -Version: 1.0.4 +Version: 1.0.5 Release: 0 # Summary: Modular, Secure, and Well Designed IRC Client +# License: GPL-2.0+ Group: Productivity/Networking/IRC -# Url: http://www.irssi.org Source: https://github.com/irssi/irssi/releases/download/%{version}/irssi-%{version}.tar.xz Source1: irssi.desktop ++++++ irssi-1.0.4.tar.xz -> irssi-1.0.5.tar.xz ++++++ ++++ 1964 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/irssi-1.0.4/ChangeLog new/irssi-1.0.5/ChangeLog --- old/irssi-1.0.4/ChangeLog 2017-07-05 21:25:31.000000000 +0200 +++ new/irssi-1.0.5/ChangeLog 2017-10-20 17:16:49.000000000 +0200 @@ -1,3 +1,53 @@ +commit 7a770022be9a77aeda7af4b7090fb780a23c3b4e +Author: ailin-nemui <[email protected]> +Date: Fri Oct 20 17:15:30 2017 +0200 + + tag as 1.0.5 + +commit eef318301421b0ade7f184543f7165df583744c2 +Author: ailin-nemui <[email protected]> +Date: Fri Oct 13 17:14:47 2017 +0200 + + Merge pull request #769 from horgh/horgh/error-check-server-connect + + Set host to an empty string on error + +commit 404eb0995e3b3ac87d59430250644827a421ed23 +Author: ailin-nemui <[email protected]> +Date: Sun Oct 8 18:50:19 2017 +0200 + + Merge pull request #763 from rbisewski/master + + Improvements to statusbar documentation and help text. + +commit dd53f3fc9601e3d6a07dffe85b985f309a4e87a1 +Author: ailin-nemui <[email protected]> +Date: Thu Aug 10 16:49:32 2017 +0200 + + Merge pull request #737 from ailin-nemui/fix-733 + + Revert "Merge pull request #452 from LemonBoy/terminfo-cup" + +commit d2ccea03d4bc7dd76b5cdf2df64e2416858fe014 +Author: ailin-nemui <[email protected]> +Date: Wed Jul 26 10:57:05 2017 +0200 + + Merge pull request #719 from LemonBoy/sasl-disable-none + + Setting sasl_mechanism to '' disables the auth + +commit 43e44d553d44e313003cee87e6ea5e24d68b84a1 +Author: Nei <[email protected]> +Date: Fri Oct 20 13:31:26 2017 +0000 + + Merge branch 'security' into 'master' + + Security + + Closes GL#12, GL#13, GL#14, GL#15, GL#16 + + See merge request irssi/irssi!23 + commit 527c19803b56cc0ec84050ca63d992fbecadac1e Author: Ailin Nemui <[email protected]> Date: Wed Jul 5 17:12:30 2017 +0200 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/irssi-1.0.4/NEWS new/irssi-1.0.5/NEWS --- old/irssi-1.0.4/NEWS 2017-07-05 21:20:43.000000000 +0200 +++ new/irssi-1.0.5/NEWS 2017-10-20 17:16:43.000000000 +0200 @@ -1,3 +1,21 @@ +v1.0.5 2017-10-23 The Irssi team <[email protected]> + - Fix missing -sasl_method '' in /NETWORK (#718, #719). + - Fix incorrect restoration of term state when hitting SUSP + inside screen (#737, #733). + - Fix out of bounds read when compressing colour + sequences. Found by Hanno Böck (GL#12, GL!18). + - Fix use after free condition during a race condition when + waiting on channel sync during a rejoin (GL#13, GL!19). + - Fix null pointer dereference when parsing certain malformed + CTCP DCC messages (GL#14, GL!20). + - Fix crash due to null pointer dereference when failing to + split messages due to overlong nick or target (GL#15, GL!21). + - Fix out of bounds read when trying to skip a safe channel ID + without verifying that the ID is long enough (GL#16, GL!22). + - Fix return of random memory when inet_ntop failed (#769). + - Minor statusbar help update. By Robert Bisewski (#758, + #763). + v1.0.4 2017-07-07 The Irssi team <[email protected]> - Fix null pointer dereference when parsing invalid timestamp (GL#10, GL!15). Reported by Brian 'geeknik' Carpenter. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/irssi-1.0.4/build-aux/compile new/irssi-1.0.5/build-aux/compile --- old/irssi-1.0.4/build-aux/compile 2017-07-05 21:25:38.000000000 +0200 +++ new/irssi-1.0.5/build-aux/compile 2017-10-20 17:16:55.000000000 +0200 @@ -1,9 +1,9 @@ #! /bin/sh # Wrapper for compilers which do not understand '-c -o'. -scriptversion=2012-10-14.11; # UTC +scriptversion=2016-01-11.22; # UTC -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # Written by Tom Tromey <[email protected]>. # # This program is free software; you can redistribute it and/or modify @@ -255,7 +255,8 @@ echo "compile $scriptversion" exit $? ;; - cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac @@ -342,6 +343,6 @@ # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/irssi-1.0.4/build-aux/missing new/irssi-1.0.5/build-aux/missing --- old/irssi-1.0.4/build-aux/missing 2017-07-05 21:25:38.000000000 +0200 +++ new/irssi-1.0.5/build-aux/missing 2017-10-20 17:16:55.000000000 +0200 @@ -1,9 +1,9 @@ #! /bin/sh # Common wrapper for a few potentially missing GNU programs. -scriptversion=2013-10-28.13; # UTC +scriptversion=2016-01-11.22; # UTC -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard <[email protected]>, 1996. # This program is free software; you can redistribute it and/or modify @@ -210,6 +210,6 @@ # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/irssi-1.0.4/configure.ac new/irssi-1.0.5/configure.ac --- old/irssi-1.0.4/configure.ac 2017-07-05 21:20:43.000000000 +0200 +++ new/irssi-1.0.5/configure.ac 2017-10-20 17:16:43.000000000 +0200 @@ -1,4 +1,4 @@ -AC_INIT(irssi, 1.0.4) +AC_INIT(irssi, 1.0.5) AC_CONFIG_SRCDIR([src]) AC_CONFIG_AUX_DIR(build-aux) AC_PREREQ(2.50) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/irssi-1.0.4/docs/help/in/network.in new/irssi-1.0.5/docs/help/in/network.in --- old/irssi-1.0.4/docs/help/in/network.in 2017-07-05 16:43:52.000000000 +0200 +++ new/irssi-1.0.5/docs/help/in/network.in 2017-10-20 17:16:43.000000000 +0200 @@ -36,6 +36,7 @@ -sasl_mechanism Specifies the mechanism to use for the SASL authentication. At the moment irssi only supports the 'plain' and the 'external' mechanisms. + Use '' to disable the authentication. -sasl_username Specifies the username to use during the SASL authentication. -sasl_password Specifies the password to use during the SASL authentication. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/irssi-1.0.4/docs/help/in/statusbar.in new/irssi-1.0.5/docs/help/in/statusbar.in --- old/irssi-1.0.4/docs/help/in/statusbar.in 2017-07-05 16:43:52.000000000 +0200 +++ new/irssi-1.0.5/docs/help/in/statusbar.in 2017-10-20 17:16:34.000000000 +0200 @@ -5,22 +5,33 @@ %9Parameters:%9 - ENABLE: Enables the statusbar. - DISABLE: Disabled the statusbar. + ENABLE: Adds a statusbar to the list of statusbars. + DISABLE: Removes a statusbar from the list. Note that for + built-in statusbars they can be enabled again should the + user wish to add back the default statusbars. RESET: Restores the default statusbar configuration. - TYPE: Identifies the type of statusbar. - PLACEMENT: Identifies the placement of the statusbar. - POSITION: Identifies the position of the statusbar. - VISIBLE: Identifies the visibility of the statusbar. - ADD: Adds a statusbar into the configuration. - REMOVE: Removes a statusbar from the configuration. + TYPE: Sets the type of statusbar, for each split window or only + for the current root screen. + PLACEMENT: Sets the placement of the statusbar, either at the top or + the bottom of the screen. + POSITION: Sets the position of the statusbar. Represented as a + number, with 0 implying the first position. + VISIBLE: Sets the visibility of the statusbar or item. If set to + always it is visible on all screens, otherwise if set to + inactive or active then it is only visible on inactive + or active screens, respectively. + ADD: Adds an item to the specified statusbar. It can be set to + appear before/after another item and left/right aligned + to a specified position on the screen. + REMOVE: Removes an item from the specified statusbar. - The name of the statusbar; if no argument is given, the list of statusbars - will be displayed. + Where name refers to the name of the statusbar; if no argument is + given, the entire list of statusbars will be displayed. %9Description:%9 - Modified the attributes of the statusbar. + Allows adjustment of the attributes and items of a statusbar, as well + as where it is located and whether or not it is currently visible. %9Examples:%9 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/irssi-1.0.4/docs/help/network new/irssi-1.0.5/docs/help/network --- old/irssi-1.0.4/docs/help/network 2017-07-05 21:25:31.000000000 +0200 +++ new/irssi-1.0.5/docs/help/network 2017-10-20 17:16:49.000000000 +0200 @@ -37,6 +37,7 @@ -sasl_mechanism Specifies the mechanism to use for the SASL authentication. At the moment irssi only supports the 'plain' and the 'external' mechanisms. + Use '' to disable the authentication. -sasl_username Specifies the username to use during the SASL authentication. -sasl_password Specifies the password to use during the SASL authentication. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/irssi-1.0.4/docs/help/statusbar new/irssi-1.0.5/docs/help/statusbar --- old/irssi-1.0.4/docs/help/statusbar 2017-07-05 21:25:31.000000000 +0200 +++ new/irssi-1.0.5/docs/help/statusbar 2017-10-20 17:16:49.000000000 +0200 @@ -13,22 +13,33 @@ %9Parameters:%9 - ENABLE: Enables the statusbar. - DISABLE: Disabled the statusbar. + ENABLE: Adds a statusbar to the list of statusbars. + DISABLE: Removes a statusbar from the list. Note that for + built-in statusbars they can be enabled again should the + user wish to add back the default statusbars. RESET: Restores the default statusbar configuration. - TYPE: Identifies the type of statusbar. - PLACEMENT: Identifies the placement of the statusbar. - POSITION: Identifies the position of the statusbar. - VISIBLE: Identifies the visibility of the statusbar. - ADD: Adds a statusbar into the configuration. - REMOVE: Removes a statusbar from the configuration. + TYPE: Sets the type of statusbar, for each split window or only + for the current root screen. + PLACEMENT: Sets the placement of the statusbar, either at the top or + the bottom of the screen. + POSITION: Sets the position of the statusbar. Represented as a + number, with 0 implying the first position. + VISIBLE: Sets the visibility of the statusbar or item. If set to + always it is visible on all screens, otherwise if set to + inactive or active then it is only visible on inactive + or active screens, respectively. + ADD: Adds an item to the specified statusbar. It can be set to + appear before/after another item and left/right aligned + to a specified position on the screen. + REMOVE: Removes an item from the specified statusbar. - The name of the statusbar; if no argument is given, the list of statusbars - will be displayed. + Where name refers to the name of the statusbar; if no argument is + given, the entire list of statusbars will be displayed. %9Description:%9 - Modified the attributes of the statusbar. + Allows adjustment of the attributes and items of a statusbar, as well + as where it is located and whether or not it is currently visible. %9Examples:%9 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/irssi-1.0.4/irssi-config.h new/irssi-1.0.5/irssi-config.h --- old/irssi-1.0.4/irssi-config.h 2017-07-05 21:25:42.000000000 +0200 +++ new/irssi-1.0.5/irssi-config.h 2017-10-20 17:16:59.000000000 +0200 @@ -71,7 +71,7 @@ #define PACKAGE_NAME "irssi" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "irssi 1.0.4" +#define PACKAGE_STRING "irssi 1.0.5" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "irssi" @@ -80,7 +80,7 @@ #define PACKAGE_URL "" /* Define to the version of this package. */ -#define PACKAGE_VERSION "1.0.4" +#define PACKAGE_VERSION "1.0.5" /* printf()-format for uoff_t, eg. "u" or "lu" or "llu" */ #define PRIuUOFF_T "lu" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/irssi-1.0.4/irssi-version.h new/irssi-1.0.5/irssi-version.h --- old/irssi-1.0.4/irssi-version.h 2017-07-05 21:25:43.000000000 +0200 +++ new/irssi-1.0.5/irssi-version.h 2017-10-20 17:17:05.000000000 +0200 @@ -1,2 +1,2 @@ -#define IRSSI_VERSION_DATE 20170705 -#define IRSSI_VERSION_TIME 1712 +#define IRSSI_VERSION_DATE 20171020 +#define IRSSI_VERSION_TIME 1715 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/irssi-1.0.4/src/core/network.c new/irssi-1.0.5/src/core/network.c --- old/irssi-1.0.4/src/core/network.c 2017-07-05 16:43:52.000000000 +0200 +++ new/irssi-1.0.5/src/core/network.c 2017-10-20 17:16:43.000000000 +0200 @@ -462,6 +462,7 @@ int net_ip2host(IPADDR *ip, char *host) { + host[0] = '\0'; return inet_ntop(ip->family, &ip->ip, host, MAX_IP_LEN) ? 0 : -1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/irssi-1.0.4/src/core/recode.c new/irssi-1.0.5/src/core/recode.c --- old/irssi-1.0.4/src/core/recode.c 2017-07-05 16:43:52.000000000 +0200 +++ new/irssi-1.0.5/src/core/recode.c 2017-10-20 17:16:34.000000000 +0200 @@ -198,7 +198,12 @@ int n = 0; char **ret; - g_return_val_if_fail(str != NULL, NULL); + g_warn_if_fail(str != NULL); + if (str == NULL) { + ret = g_new(char *, 1); + ret[0] = NULL; + return ret; + } if (settings_get_bool("recode")) { to = find_conversion(server, target); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/irssi-1.0.4/src/fe-common/core/themes.c new/irssi-1.0.5/src/fe-common/core/themes.c --- old/irssi-1.0.4/src/fe-common/core/themes.c 2017-07-05 16:43:52.000000000 +0200 +++ new/irssi-1.0.5/src/fe-common/core/themes.c 2017-10-20 17:16:34.000000000 +0200 @@ -587,7 +587,7 @@ /* a normal character */ g_string_append_c(str, *format); format++; - } else { + } else if (format[1] != '\0') { /* %format */ format++; if (IS_OLD_FORMAT(*format, last_fg, last_bg)) { @@ -614,6 +614,11 @@ last_bg = '\0'; } format++; + } else { + /* % at end of string */ + format++; + g_string_append_c(str, '%'); + g_string_append_c(str, '%'); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/irssi-1.0.4/src/fe-common/irc/fe-ircnet.c new/irssi-1.0.5/src/fe-common/irc/fe-ircnet.c --- old/irssi-1.0.4/src/fe-common/irc/fe-ircnet.c 2017-07-05 16:43:52.000000000 +0200 +++ new/irssi-1.0.5/src/fe-common/irc/fe-ircnet.c 2017-10-20 17:16:43.000000000 +0200 @@ -163,11 +163,11 @@ /* the validity of the parameters is checked in sig_server_setup_fill_chatnet */ value = g_hash_table_lookup(optlist, "sasl_mechanism"); - if (value != NULL && *value != '\0') rec->sasl_mechanism = g_strdup(value); + if (value != NULL) rec->sasl_mechanism = *value != '\0' ? g_strdup(value) : NULL; value = g_hash_table_lookup(optlist, "sasl_username"); - if (value != NULL && *value != '\0') rec->sasl_username = g_strdup(value); + if (value != NULL) rec->sasl_username = *value != '\0' ? g_strdup(value) : NULL; value = g_hash_table_lookup(optlist, "sasl_password"); - if (value != NULL && *value != '\0') rec->sasl_password = g_strdup(value); + if (value != NULL) rec->sasl_password = *value != '\0' ? g_strdup(value) : NULL; ircnet_create(rec); printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE, IRCTXT_NETWORK_ADDED, name); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/irssi-1.0.4/src/fe-text/term-terminfo.c new/irssi-1.0.5/src/fe-text/term-terminfo.c --- old/irssi-1.0.4/src/fe-text/term-terminfo.c 2017-07-05 16:57:53.000000000 +0200 +++ new/irssi-1.0.5/src/fe-text/term-terminfo.c 2017-10-20 17:16:34.000000000 +0200 @@ -629,6 +629,13 @@ { terminfo_stop(current_term); kill(getpid(), SIGTSTP); + /* this call needs to stay here in case the TSTP was ignored, + because then we never see a CONT to call the restoration + code. On the other hand we also cannot remove the CONT + handler because then nothing would restore the screen when + Irssi is killed with TSTP/STOP from external. */ + terminfo_cont(current_term); + irssi_redraw(); } static int input_utf8(const unsigned char *buffer, int size, unichar *result) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/irssi-1.0.4/src/irc/core/channel-events.c new/irssi-1.0.5/src/irc/core/channel-events.c --- old/irssi-1.0.4/src/irc/core/channel-events.c 2017-07-05 16:43:52.000000000 +0200 +++ new/irssi-1.0.5/src/irc/core/channel-events.c 2017-10-20 17:16:34.000000000 +0200 @@ -37,7 +37,7 @@ channel++; /* server didn't understand !channels */ chanrec = channel_find(SERVER(server), channel); - if (chanrec == NULL && channel[0] == '!') { + if (chanrec == NULL && channel[0] == '!' && strlen(channel) > 6) { /* it probably replied with the full !channel name, find the channel with the short name.. */ chan2 = g_strdup_printf("!%s", channel+6); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/irssi-1.0.4/src/irc/core/channels-query.c new/irssi-1.0.5/src/irc/core/channels-query.c --- old/irssi-1.0.4/src/irc/core/channels-query.c 2017-07-05 16:43:52.000000000 +0200 +++ new/irssi-1.0.5/src/irc/core/channels-query.c 2017-10-20 17:16:34.000000000 +0200 @@ -119,21 +119,22 @@ int n; rec = channel->server->chanqueries; + if (rec == NULL) return; /* remove channel from query lists */ for (n = 0; n < CHANNEL_QUERIES; n++) rec->queries[n] = g_slist_remove(rec->queries[n], channel); rec->current_queries = g_slist_remove(rec->current_queries, channel); - query_check(channel->server); + if (!channel->server->disconnected) + query_check(channel->server); } static void sig_channel_destroyed(IRC_CHANNEL_REC *channel) { g_return_if_fail(channel != NULL); - if (IS_IRC_CHANNEL(channel) && !channel->server->disconnected && - !channel->synced) + if (IS_IRC_CHANNEL(channel)) query_remove_all(channel); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/irssi-1.0.4/src/irc/core/irc-servers-setup.c new/irssi-1.0.5/src/irc/core/irc-servers-setup.c --- old/irssi-1.0.4/src/irc/core/irc-servers-setup.c 2017-07-05 16:43:52.000000000 +0200 +++ new/irssi-1.0.5/src/irc/core/irc-servers-setup.c 2017-10-20 17:16:43.000000000 +0200 @@ -89,6 +89,8 @@ /* Validate the SASL parameters filled by sig_chatnet_read() or cmd_network_add */ conn->sasl_mechanism = SASL_MECHANISM_NONE; + conn->sasl_username = NULL; + conn->sasl_password = NULL; if (ircnet->sasl_mechanism != NULL) { if (!g_ascii_strcasecmp(ircnet->sasl_mechanism, "plain")) { @@ -102,9 +104,7 @@ g_warning("The fields sasl_username and sasl_password are either missing or empty"); } else if (!g_ascii_strcasecmp(ircnet->sasl_mechanism, "external")) { - conn->sasl_mechanism = SASL_MECHANISM_EXTERNAL; - conn->sasl_username = NULL; - conn->sasl_password = NULL; + conn->sasl_mechanism = SASL_MECHANISM_EXTERNAL; } else g_warning("Unsupported SASL mechanism \"%s\" selected", ircnet->sasl_mechanism); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/irssi-1.0.4/src/irc/core/irc-servers.c new/irssi-1.0.5/src/irc/core/irc-servers.c --- old/irssi-1.0.4/src/irc/core/irc-servers.c 2017-07-05 16:43:52.000000000 +0200 +++ new/irssi-1.0.5/src/irc/core/irc-servers.c 2017-10-20 17:16:34.000000000 +0200 @@ -116,11 +116,14 @@ * the code much simpler. It's worth it. */ len -= strlen(recoded_start) + strlen(recoded_end); + g_warn_if_fail(len > 0); if (len <= 0) { /* There is no room for anything. */ g_free(recoded_start); g_free(recoded_end); - return NULL; + lines = g_new(char *, 1); + lines[0] = NULL; + return lines; } lines = recode_split(server, line, target, len, onspace); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/irssi-1.0.4/src/irc/dcc/dcc-chat.c new/irssi-1.0.5/src/irc/dcc/dcc-chat.c --- old/irssi-1.0.4/src/irc/dcc/dcc-chat.c 2017-07-05 16:43:52.000000000 +0200 +++ new/irssi-1.0.5/src/irc/dcc/dcc-chat.c 2017-10-20 17:16:34.000000000 +0200 @@ -66,6 +66,13 @@ dcc->id = dcc_chat_get_new_id(nick); dcc_init_rec(DCC(dcc), server, chat, nick, arg); + if (dcc->module_data == NULL) { + /* failed to successfully init; TODO: change init_rec API */ + g_free(dcc->id); + g_free(dcc); + return NULL; + } + return dcc; } @@ -471,6 +478,7 @@ /* We are accepting a passive DCC CHAT. */ dcc_chat_passive(dcc); } + cmd_params_free(free_arg); return; } @@ -485,6 +493,11 @@ cmd_param_error(CMDERR_NOT_CONNECTED); dcc = dcc_chat_create(server, NULL, nick, "chat"); + if (dcc == NULL) { + cmd_params_free(free_arg); + g_warn_if_reached(); + return; + } if (g_hash_table_lookup(optlist, "passive") == NULL) { /* Standard DCC CHAT... let's listen for incoming connections */ @@ -627,6 +640,9 @@ } passive = paramcount == 4 && g_strcmp0(params[2], "0") == 0; + if (nick == NULL) + nick = ""; + dcc = DCC_CHAT(dcc_find_request(DCC_CHAT_TYPE, nick, NULL)); if (dcc != NULL) { if (dcc_is_listening(dcc)) { @@ -658,6 +674,11 @@ } dcc = dcc_chat_create(server, chat, nick, params[0]); + if (dcc == NULL) { + g_strfreev(params); + g_warn_if_reached(); + return; + } dcc->target = g_strdup(target); dcc->port = atoi(params[2]); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/irssi-1.0.4/src/irc/dcc/dcc-get.c new/irssi-1.0.5/src/irc/dcc/dcc-get.c --- old/irssi-1.0.4/src/irc/dcc/dcc-get.c 2017-07-05 16:43:52.000000000 +0200 +++ new/irssi-1.0.5/src/irc/dcc/dcc-get.c 2017-10-20 17:16:34.000000000 +0200 @@ -43,6 +43,12 @@ dcc->fhandle = -1; dcc_init_rec(DCC(dcc), server, chat, nick, arg); + if (dcc->module_data == NULL) { + /* failed to successfully init; TODO: change API */ + g_free(dcc); + return NULL; + } + return dcc; } @@ -430,9 +436,10 @@ int p_id = -1; int passive = FALSE; - if (addr == NULL) { + if (addr == NULL) addr = ""; - } + if (nick == NULL) + nick = ""; /* SEND <file name> <address> <port> <size> [...] */ /* SEND <file name> <address> 0 <size> <id> (DCC SEND passive protocol) */ @@ -512,6 +519,12 @@ dcc_destroy(DCC(dcc)); /* remove the old DCC */ dcc = dcc_get_create(server, chat, nick, fname); + if (dcc == NULL) { + g_free(address); + g_free(fname); + g_warn_if_reached(); + return; + } dcc->target = g_strdup(target); if (passive && port == 0) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/irssi-1.0.4/src/irc/dcc/dcc-send.c new/irssi-1.0.5/src/irc/dcc/dcc-send.c --- old/irssi-1.0.4/src/irc/dcc/dcc-send.c 2017-07-05 16:43:52.000000000 +0200 +++ new/irssi-1.0.5/src/irc/dcc/dcc-send.c 2017-10-20 17:16:34.000000000 +0200 @@ -237,6 +237,12 @@ dcc->queue = -1; dcc_init_rec(DCC(dcc), server, chat, nick, arg); + if (dcc->module_data == NULL) { + /* failed to successfully init; TODO: change API */ + g_free(dcc); + return NULL; + } + return dcc; } @@ -417,6 +423,10 @@ dcc = dcc_send_create(server, chat, target, str); g_free(str); + if (dcc == NULL) { + g_warn_if_reached(); + return FALSE; + } dcc->handle = handle; dcc->port = port;
