Hello community, here is the log from the commit of package znc for openSUSE:Factory checked in at 2019-06-19 20:59:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/znc (Old) and /work/SRC/openSUSE:Factory/.znc.new.4811 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "znc" Wed Jun 19 20:59:07 2019 rev:18 rq:705792 version:1.7.3 Changes: -------- --- /work/SRC/openSUSE:Factory/znc/znc.changes 2019-03-26 22:33:33.697689288 +0100 +++ /work/SRC/openSUSE:Factory/.znc.new.4811/znc.changes 2019-06-19 20:59:09.846022134 +0200 @@ -1,0 +2,9 @@ +Tue May 28 07:01:09 UTC 2019 - Martin Pluskal <[email protected]> + +- Update to version 1.7.3: + * This is a security release to fix CVE-2019-9917. + * Docker only: the znc image now supports --user option of docker + run. +- Drop no longer needed znc-CVE-2019-9917.patch + +------------------------------------------------------------------- Old: ---- znc-1.7.2.tar.gz znc-1.7.2.tar.gz.sig znc-CVE-2019-9917.patch New: ---- znc-1.7.3.tar.gz znc-1.7.3.tar.gz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ znc.spec ++++++ --- /var/tmp/diff_new_pack.POYdPf/_old 2019-06-19 20:59:10.358022592 +0200 +++ /var/tmp/diff_new_pack.POYdPf/_new 2019-06-19 20:59:10.362022596 +0200 @@ -17,7 +17,7 @@ Name: znc -Version: 1.7.2 +Version: 1.7.3 Release: 0 Summary: Advanced IRC Bouncer License: Apache-2.0 @@ -26,11 +26,10 @@ Source0: https://znc.in/releases/%{name}-%{version}.tar.gz Source1: https://znc.in/releases/%{name}-%{version}.tar.gz.sig Source2: %{name}.keyring -# PATCH-FIX-UPSTREAM znc-CVE-2019-9917.patch boo#1130360 -Patch0: znc-CVE-2019-9917.patch BuildRequires: cmake >= 3.1 BuildRequires: fdupes BuildRequires: gcc-c++ +BuildRequires: libboost_locale-devel BuildRequires: perl BuildRequires: pkgconfig BuildRequires: systemd-rpm-macros @@ -44,11 +43,6 @@ Requires(pre): shadow Recommends: %{name}-lang %systemd_requires -%if 0%{?suse_version} > 1325 -BuildRequires: libboost_locale-devel -%else -BuildRequires: boost-devel -%endif %description ZNC is an IRC bouncer with many features like detaching, multiple @@ -112,7 +106,6 @@ %prep %setup -q -%patch0 -p1 %build %cmake \ ++++++ znc-1.7.2.tar.gz -> znc-1.7.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/znc-1.7.2/CMakeLists.txt new/znc-1.7.3/CMakeLists.txt --- old/znc-1.7.2/CMakeLists.txt 2019-01-27 10:20:05.000000000 +0100 +++ new/znc-1.7.3/CMakeLists.txt 2019-03-30 15:37:00.000000000 +0100 @@ -15,8 +15,8 @@ # cmake_minimum_required(VERSION 3.1) -project(ZNC VERSION 1.7.2) -set(ZNC_VERSION 1.7.2) +project(ZNC VERSION 1.7.3) +set(ZNC_VERSION 1.7.3) set(append_git_version false) set(alpha_version "") # e.g. "-rc1" set(VERSION_EXTRA "" CACHE STRING diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/znc-1.7.2/ChangeLog.md new/znc-1.7.3/ChangeLog.md --- old/znc-1.7.2/ChangeLog.md 2019-01-27 10:20:05.000000000 +0100 +++ new/znc-1.7.3/ChangeLog.md 2019-03-30 15:37:00.000000000 +0100 @@ -1,3 +1,13 @@ +# ZNC 1.7.3 (2019-03-30) + +## Fixes +This is a security release to fix CVE-2019-9917. Thanks to LunarBNC for the bugreport. + +## New +Docker only: the znc image now supports --user option of docker run. + + + # ZNC 1.7.2 (2019-01-19) ## New diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/znc-1.7.2/configure new/znc-1.7.3/configure --- old/znc-1.7.2/configure 2019-01-27 10:20:29.000000000 +0100 +++ new/znc-1.7.3/configure 2019-03-30 15:37:24.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for znc 1.7.2. +# Generated by GNU Autoconf 2.69 for znc 1.7.3. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -577,8 +577,8 @@ # Identity of this package. PACKAGE_NAME='znc' PACKAGE_TARNAME='znc' -PACKAGE_VERSION='1.7.2' -PACKAGE_STRING='znc 1.7.2' +PACKAGE_VERSION='1.7.3' +PACKAGE_STRING='znc 1.7.3' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1269,7 +1269,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures znc 1.7.2 to adapt to many kinds of systems. +\`configure' configures znc 1.7.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1334,7 +1334,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of znc 1.7.2:";; + short | recursive ) echo "Configuration of znc 1.7.3:";; esac cat <<\_ACEOF @@ -1475,7 +1475,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -znc configure 1.7.2 +znc configure 1.7.3 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1643,7 +1643,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by znc $as_me 1.7.2, which was +It was created by znc $as_me 1.7.3, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -1991,7 +1991,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -LIBZNC_VERSION=1.7.2 +LIBZNC_VERSION=1.7.3 ac_ext=cpp @@ -6290,7 +6290,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by znc $as_me 1.7.2, which was +This file was extended by znc $as_me 1.7.3, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -6352,7 +6352,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -znc config.status 1.7.2 +znc config.status 1.7.3 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -7081,7 +7081,7 @@ fi echo -echo ZNC 1.7.2 configured +echo ZNC 1.7.3 configured echo echo "prefix: $prefix" echo "debug: $DEBUG" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/znc-1.7.2/configure.ac new/znc-1.7.3/configure.ac --- old/znc-1.7.2/configure.ac 2019-01-27 10:20:05.000000000 +0100 +++ new/znc-1.7.3/configure.ac 2019-03-30 15:37:00.000000000 +0100 @@ -7,8 +7,8 @@ dnl Needed for AC_PATH_PROGS_FEATURE_CHECK which was added in 2.62 AC_PREREQ([2.62]) dnl Keep the version number in sync with version.h! -AC_INIT([znc], [1.7.2]) -LIBZNC_VERSION=1.7.2 +AC_INIT([znc], [1.7.3]) +LIBZNC_VERSION=1.7.3 AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_SRCDIR([src/znc.cpp]) AC_LANG([C++]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/znc-1.7.2/include/znc/version.h new/znc-1.7.3/include/znc/version.h --- old/znc-1.7.2/include/znc/version.h 2019-01-27 10:20:05.000000000 +0100 +++ new/znc-1.7.3/include/znc/version.h 2019-03-30 15:37:00.000000000 +0100 @@ -20,9 +20,9 @@ // The following defines are for #if comparison (preprocessor only likes ints) #define VERSION_MAJOR 1 #define VERSION_MINOR 7 -#define VERSION_PATCH 2 +#define VERSION_PATCH 3 // This one is for display purpose and to check ABI compatibility of modules -#define VERSION_STR "1.7.2" +#define VERSION_STR "1.7.3" #endif // Don't use this one diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/znc-1.7.2/modules/controlpanel.cpp new/znc-1.7.3/modules/controlpanel.cpp --- old/znc-1.7.2/modules/controlpanel.cpp 2019-01-27 10:20:05.000000000 +0100 +++ new/znc-1.7.3/modules/controlpanel.cpp 2019-03-30 15:37:00.000000000 +0100 @@ -495,7 +495,7 @@ #ifdef HAVE_ICU else if (sVar == "clientencoding") { pUser->SetClientEncoding(sValue); - PutModule("ClientEncoding = " + sValue); + PutModule("ClientEncoding = " + pUser->GetClientEncoding()); } #endif else Binary files old/znc-1.7.2/modules/modperl/generated.tar.gz and new/znc-1.7.3/modules/modperl/generated.tar.gz differ Binary files old/znc-1.7.2/modules/modpython/generated.tar.gz and new/znc-1.7.3/modules/modpython/generated.tar.gz differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/znc-1.7.2/src/IRCNetwork.cpp new/znc-1.7.3/src/IRCNetwork.cpp --- old/znc-1.7.2/src/IRCNetwork.cpp 2019-01-27 10:20:05.000000000 +0100 +++ new/znc-1.7.3/src/IRCNetwork.cpp 2019-03-30 15:37:00.000000000 +0100 @@ -1482,9 +1482,9 @@ } void CIRCNetwork::SetEncoding(const CString& s) { - m_sEncoding = s; + m_sEncoding = CZNC::Get().FixupEncoding(s); if (GetIRCSock()) { - GetIRCSock()->SetEncoding(s); + GetIRCSock()->SetEncoding(m_sEncoding); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/znc-1.7.2/src/User.cpp new/znc-1.7.3/src/User.cpp --- old/znc-1.7.2/src/User.cpp 2019-01-27 10:20:05.000000000 +0100 +++ new/znc-1.7.3/src/User.cpp 2019-03-30 15:37:00.000000000 +0100 @@ -1253,9 +1253,9 @@ void CUser::SetDenySetBindHost(bool b) { m_bDenySetBindHost = b; } void CUser::SetDefaultChanModes(const CString& s) { m_sDefaultChanModes = s; } void CUser::SetClientEncoding(const CString& s) { - m_sClientEncoding = s; + m_sClientEncoding = CZNC::Get().FixupEncoding(s); for (CClient* pClient : GetAllClients()) { - pClient->SetEncoding(s); + pClient->SetEncoding(m_sClientEncoding); } } void CUser::SetQuitMsg(const CString& s) { m_sQuitMsg = s; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/znc-1.7.2/src/po/znc.pt_BR.po new/znc-1.7.3/src/po/znc.pt_BR.po --- old/znc-1.7.2/src/po/znc.pt_BR.po 2019-01-27 10:20:05.000000000 +0100 +++ new/znc-1.7.3/src/po/znc.pt_BR.po 2019-03-30 15:37:00.000000000 +0100 @@ -77,7 +77,7 @@ #: IRCNetwork.cpp:235 msgid "Jumping servers because this server is no longer in the list" -msgstr "" +msgstr "Trocando de servidor, pois este servidor não está mais na lista" #: IRCNetwork.cpp:640 User.cpp:678 msgid "Welcome to ZNC" @@ -90,7 +90,7 @@ #: IRCNetwork.cpp:758 msgid "This network is being deleted or moved to another user." -msgstr "" +msgstr "Esta rede está sendo excluída ou movida para outro usuário." #: IRCNetwork.cpp:987 msgid "The channel {1} could not be joined, disabling it." @@ -98,11 +98,13 @@ #: IRCNetwork.cpp:1116 msgid "Your current server was removed, jumping..." -msgstr "" +msgstr "O seu servidor atual foi removido, trocando de servidor..." #: IRCNetwork.cpp:1279 msgid "Cannot connect to {1}, because ZNC is not compiled with SSL support." msgstr "" +"Não foi possível conectar-se a {1}. O ZNC não foi compilado com suporte a " +"SSL." #: IRCNetwork.cpp:1300 msgid "Some module aborted the connection attempt" @@ -114,7 +116,7 @@ #: IRCSock.cpp:692 msgid "ZNC seems to be connected to itself, disconnecting..." -msgstr "" +msgstr "Parece que o ZNC está conectado a si mesmo. Desconectando..." #: IRCSock.cpp:739 msgid "Server {1} redirects us to {2}:{3} with reason: {4}" @@ -122,15 +124,15 @@ #: IRCSock.cpp:743 msgid "Perhaps you want to add it as a new server." -msgstr "" +msgstr "Talvez você queira adicioná-lo como um novo servidor." #: IRCSock.cpp:973 msgid "Channel {1} is linked to another channel and was thus disabled." -msgstr "" +msgstr "O canal {1} foi desabilitado por estar vinculado a outro canal." #: IRCSock.cpp:985 msgid "Switched to SSL (STARTTLS)" -msgstr "" +msgstr "Alternado para SSL (STARTTLS)" #: IRCSock.cpp:1038 msgid "You quit: {1}" @@ -151,10 +153,11 @@ #: IRCSock.cpp:1308 msgid "If you trust this certificate, do /znc AddTrustedServerFingerprint {1}" msgstr "" +"Caso confie neste certificado, digite /znc AddTrustedServerFingerprint {1}" #: IRCSock.cpp:1325 msgid "IRC connection timed out. Reconnecting..." -msgstr "" +msgstr "A conexão ao servidor expirou. Reconectando..." #: IRCSock.cpp:1337 msgid "Connection Refused. Reconnecting..." @@ -179,6 +182,8 @@ #: Client.cpp:359 msgid "A client from {1} attempted to login as you, but was rejected: {2}" msgstr "" +"Um cliente com o IP {1} tentou iniciar sessão na sua conta, mas foi " +"rejeitado: {2}" #: Client.cpp:394 msgid "Network {1} doesn't exist." @@ -205,6 +210,8 @@ "If you want to choose another network, use /znc JumpNetwork <network>, or " "connect to ZNC with username {1}/<network> (instead of just {1})" msgstr "" +"Caso queira escolher outra rede, digite /znc JumpNetwork <rede>, ou então " +"conecte ao ZNC com o nome de usuário {1}/<rede> (em vez de somente {1})" #: Client.cpp:420 msgid "" @@ -253,8 +260,8 @@ #: Client.cpp:1337 Client.cpp:1359 ClientCommand.cpp:129 ClientCommand.cpp:151 msgid "There was {1} channel matching [{2}]" msgid_plural "There were {1} channels matching [{2}]" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Foi encontrado {1} canal correspondente a [{2}]" +msgstr[1] "Foi encontrado {1} canal correspondentes a [{2}]" #: Client.cpp:1340 ClientCommand.cpp:132 msgid "Attached {1} channel" @@ -264,7 +271,7 @@ #: Client.cpp:1352 msgid "Usage: /detach <#chans>" -msgstr "" +msgstr "Uso: /detach <#canais>" #: Client.cpp:1362 ClientCommand.cpp:154 msgid "Detached {1} channel" @@ -292,7 +299,7 @@ #: Modules.cpp:573 ClientCommand.cpp:1894 msgid "No matches for '{1}'" -msgstr "" +msgstr "Nenhuma correspondência para '{1}'" #: Modules.cpp:691 msgid "This module doesn't implement any commands." @@ -312,7 +319,7 @@ #: Modules.cpp:1659 msgid "Module {1} does not support module type {2}." -msgstr "" +msgstr "O módulo {1} não suporta o tipo de módulo {2}." #: Modules.cpp:1666 msgid "Module {1} requires a user." @@ -328,11 +335,11 @@ #: Modules.cpp:1694 msgid "Module {1} aborted: {2}" -msgstr "" +msgstr "Módulo {1} finalizado: {2}" #: Modules.cpp:1696 msgid "Module {1} aborted." -msgstr "" +msgstr "Módulo {1} finalizado." #: Modules.cpp:1720 Modules.cpp:1762 msgid "Module [{1}] not loaded." @@ -340,11 +347,11 @@ #: Modules.cpp:1744 msgid "Module {1} unloaded." -msgstr "" +msgstr "Módulo {1} desligado." #: Modules.cpp:1749 msgid "Unable to unload module {1}." -msgstr "" +msgstr "Não foi possível desativar o módulo {1}." #: Modules.cpp:1778 msgid "Reloaded module {1}." @@ -389,12 +396,12 @@ #: Modules.cpp:2002 Modules.cpp:2008 msgctxt "modhelpcmd" msgid "Command" -msgstr "" +msgstr "Comando" #: Modules.cpp:2003 Modules.cpp:2009 msgctxt "modhelpcmd" msgid "Description" -msgstr "" +msgstr "Descrição" #: ClientCommand.cpp:51 ClientCommand.cpp:115 ClientCommand.cpp:137 #: ClientCommand.cpp:749 ClientCommand.cpp:768 ClientCommand.cpp:794 @@ -403,7 +410,7 @@ #: ClientCommand.cpp:1401 ClientCommand.cpp:1412 ClientCommand.cpp:1421 #: ClientCommand.cpp:1433 msgid "You must be connected with a network to use this command" -msgstr "" +msgstr "Você precisa estar conectado a uma rede para usar este comando" #: ClientCommand.cpp:58 msgid "Usage: ListNicks <#chan>" @@ -423,7 +430,7 @@ #: ClientCommand.cpp:91 ClientCommand.cpp:106 msgid "Nick" -msgstr "" +msgstr "Apelido" #: ClientCommand.cpp:92 ClientCommand.cpp:107 msgid "Ident" @@ -431,15 +438,15 @@ #: ClientCommand.cpp:93 ClientCommand.cpp:108 msgid "Host" -msgstr "" +msgstr "Host" #: ClientCommand.cpp:122 msgid "Usage: Attach <#chans>" -msgstr "" +msgstr "Uso: Attach <#canais>" #: ClientCommand.cpp:144 msgid "Usage: Detach <#chans>" -msgstr "" +msgstr "Uso: Detach <#canais>" #: ClientCommand.cpp:161 msgid "There is no MOTD set." @@ -455,7 +462,7 @@ #: ClientCommand.cpp:173 msgid "Wrote config to {1}" -msgstr "" +msgstr "Configuração salva em {1}" #: ClientCommand.cpp:175 msgid "Error while trying to write config." @@ -480,12 +487,12 @@ #: ClientCommand.cpp:484 ClientCommand.cpp:500 msgctxt "listchans" msgid "Name" -msgstr "" +msgstr "Nome" #: ClientCommand.cpp:485 ClientCommand.cpp:503 msgctxt "listchans" msgid "Status" -msgstr "" +msgstr "Estado" #: ClientCommand.cpp:486 ClientCommand.cpp:510 msgctxt "listchans" @@ -505,12 +512,12 @@ #: ClientCommand.cpp:489 ClientCommand.cpp:521 msgctxt "listchans" msgid "Modes" -msgstr "" +msgstr "Modos" #: ClientCommand.cpp:490 ClientCommand.cpp:522 msgctxt "listchans" msgid "Users" -msgstr "" +msgstr "Usuários" #: ClientCommand.cpp:505 msgctxt "listchans" @@ -520,12 +527,12 @@ #: ClientCommand.cpp:506 msgctxt "listchans" msgid "Joined" -msgstr "" +msgstr "Entrou" #: ClientCommand.cpp:507 msgctxt "listchans" msgid "Disabled" -msgstr "" +msgstr "Desabilitado" #: ClientCommand.cpp:508 msgctxt "listchans" @@ -535,7 +542,7 @@ #: ClientCommand.cpp:511 ClientCommand.cpp:519 msgctxt "listchans" msgid "yes" -msgstr "" +msgstr "sim" #: ClientCommand.cpp:536 msgid "Total: {1}, Joined: {2}, Detached: {3}, Disabled: {4}" @@ -546,10 +553,13 @@ "Network number limit reached. Ask an admin to increase the limit for you, or " "delete unneeded networks using /znc DelNetwork <name>" msgstr "" +"O limite de redes foi atingido. Peça a um administrador para aumentar o seu " +"limite de redes, ou então exclua redes desnecessárias usando o comando /znc " +"DelNetwork <nome>" #: ClientCommand.cpp:550 msgid "Usage: AddNetwork <name>" -msgstr "" +msgstr "Uso: AddNetwork <nome>" #: ClientCommand.cpp:554 msgid "Network name should be alphanumeric" @@ -571,11 +581,11 @@ #: ClientCommand.cpp:582 msgid "Network deleted" -msgstr "" +msgstr "A rede foi excluída" #: ClientCommand.cpp:585 msgid "Failed to delete network, perhaps this network doesn't exist" -msgstr "" +msgstr "Falha ao excluir rede. Talvez esta rede não existe." #: ClientCommand.cpp:595 msgid "User {1} not found" @@ -584,7 +594,7 @@ #: ClientCommand.cpp:603 ClientCommand.cpp:611 msgctxt "listnetworks" msgid "Network" -msgstr "" +msgstr "Rede" #: ClientCommand.cpp:604 ClientCommand.cpp:613 ClientCommand.cpp:622 msgctxt "listnetworks" @@ -594,36 +604,36 @@ #: ClientCommand.cpp:605 ClientCommand.cpp:615 msgctxt "listnetworks" msgid "IRC Server" -msgstr "" +msgstr "Servidor IRC" #: ClientCommand.cpp:606 ClientCommand.cpp:617 msgctxt "listnetworks" msgid "IRC User" -msgstr "" +msgstr "Usuário IRC" #: ClientCommand.cpp:607 ClientCommand.cpp:619 msgctxt "listnetworks" msgid "Channels" -msgstr "" +msgstr "Canais" #: ClientCommand.cpp:614 msgctxt "listnetworks" msgid "Yes" -msgstr "" +msgstr "Sim" #: ClientCommand.cpp:623 msgctxt "listnetworks" msgid "No" -msgstr "" +msgstr "Não" #: ClientCommand.cpp:628 msgctxt "listnetworks" msgid "No networks" -msgstr "" +msgstr "Não há redes disponíveis." #: ClientCommand.cpp:632 ClientCommand.cpp:932 msgid "Access denied." -msgstr "" +msgstr "Acesso negado." #: ClientCommand.cpp:643 msgid "Usage: MoveNetwork <old user> <old network> <new user> [new network]" @@ -659,7 +669,7 @@ #: ClientCommand.cpp:718 msgid "Success." -msgstr "" +msgstr "Sucesso." #: ClientCommand.cpp:721 msgid "Copied the network to new user, but failed to delete old network" @@ -687,7 +697,7 @@ #: ClientCommand.cpp:759 msgid "Server added" -msgstr "" +msgstr "Servidor adicionado" #: ClientCommand.cpp:762 msgid "" @@ -714,27 +724,27 @@ #: ClientCommand.cpp:802 ClientCommand.cpp:809 msgctxt "listservers" msgid "Host" -msgstr "" +msgstr "Host" #: ClientCommand.cpp:803 ClientCommand.cpp:811 msgctxt "listservers" msgid "Port" -msgstr "" +msgstr "Porta" #: ClientCommand.cpp:804 ClientCommand.cpp:814 msgctxt "listservers" msgid "SSL" -msgstr "" +msgstr "SSL" #: ClientCommand.cpp:805 ClientCommand.cpp:816 msgctxt "listservers" msgid "Password" -msgstr "" +msgstr "Senha" #: ClientCommand.cpp:815 msgctxt "listservers|cell" msgid "SSL" -msgstr "" +msgstr "SSL" #: ClientCommand.cpp:832 msgid "Usage: AddTrustedServerFingerprint <fi:ng:er>" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/znc-1.7.2/src/znc.cpp new/znc-1.7.3/src/znc.cpp --- old/znc-1.7.2/src/znc.cpp 2019-01-27 10:20:05.000000000 +0100 +++ new/znc-1.7.3/src/znc.cpp 2019-03-30 15:37:00.000000000 +0100 @@ -2092,18 +2092,36 @@ m_uiForceEncoding++; #ifdef HAVE_ICU for (Csock* pSock : GetManager()) { - if (pSock->GetEncoding().empty()) { - pSock->SetEncoding("UTF-8"); - } + pSock->SetEncoding(FixupEncoding(pSock->GetEncoding())); } #endif } void CZNC::UnforceEncoding() { m_uiForceEncoding--; } bool CZNC::IsForcingEncoding() const { return m_uiForceEncoding; } CString CZNC::FixupEncoding(const CString& sEncoding) const { - if (sEncoding.empty() && m_uiForceEncoding) { + if (!m_uiForceEncoding) { + return sEncoding; + } + if (sEncoding.empty()) { return "UTF-8"; } + const char* sRealEncoding = sEncoding.c_str(); + if (sEncoding[0] == '*' || sEncoding[0] == '^') { + sRealEncoding++; + } + if (!*sRealEncoding) { + return "UTF-8"; + } +#ifdef HAVE_ICU + UErrorCode e = U_ZERO_ERROR; + UConverter* cnv = ucnv_open(sRealEncoding, &e); + if (cnv) { + ucnv_close(cnv); + } + if (U_FAILURE(e)) { + return "UTF-8"; + } +#endif return sEncoding; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/znc-1.7.2/test/integration/tests/scripting.cpp new/znc-1.7.3/test/integration/tests/scripting.cpp --- old/znc-1.7.2/test/integration/tests/scripting.cpp 2019-01-27 10:20:05.000000000 +0100 +++ new/znc-1.7.3/test/integration/tests/scripting.cpp 2019-03-30 15:37:00.000000000 +0100 @@ -55,6 +55,13 @@ ircd.Write(":n!u@h PRIVMSG nick :Hi\xF0, github issue #1229"); // "replacement character" client.ReadUntil("Hi\xEF\xBF\xBD, github issue"); + + // Non-existing encoding + client.Write("PRIVMSG *controlpanel :Set ClientEncoding $me Western"); + client.Write("JOIN #a\342"); + client.ReadUntil( + ":*[email protected] PRIVMSG nick :ClientEncoding = UTF-8"); + ircd.ReadUntil("JOIN #a\xEF\xBF\xBD"); } TEST_F(ZNCTest, ModpythonSocket) {
