update to s20180629 (#1596893)

Resolves: #1596893
This commit is contained in:
Jan Synacek 2018-07-03 12:42:34 +02:00
parent 98844ee649
commit ab2edc3863
5 changed files with 7 additions and 303 deletions

View File

@ -1,41 +0,0 @@
From 01fba8245ae81edbe07a36ee6afa00264a4714c4 Mon Sep 17 00:00:00 2001
From: Nikos Mavrogiannopoulos <nmav@gnutls.org>
Date: Mon, 14 Aug 2017 20:33:21 +0200
Subject: [PATCH 1/4] arping,tracepath: removed unused idna header
Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
(cherry picked from commit 44354bdad5ae53f90734375baa8869436b73fb31)
Resolves: #1449149
---
arping.c | 1 -
tracepath.c | 1 -
2 files changed, 2 deletions(-)
diff --git a/arping.c b/arping.c
index 1a3f40b..6ad3f5d 100644
--- a/arping.c
+++ b/arping.c
@@ -43,7 +43,6 @@ struct sysfs_devattr_values;
#endif
#ifdef USE_IDN
-#include <idna.h>
#include <locale.h>
#endif
diff --git a/tracepath.c b/tracepath.c
index 74a829d..68e2098 100644
--- a/tracepath.c
+++ b/tracepath.c
@@ -28,7 +28,6 @@
#include <arpa/inet.h>
#ifdef USE_IDN
-#include <idna.h>
#include <locale.h>
#define getnameinfo_flags NI_IDN
#else
--
2.13.6

View File

@ -1,59 +0,0 @@
From 9a30d700493a681ce00b9133e68c12e2cecb1c51 Mon Sep 17 00:00:00 2001
From: Nikos Mavrogiannopoulos <nmav@gnutls.org>
Date: Mon, 14 Aug 2017 20:39:48 +0200
Subject: [PATCH 2/4] traceroute6: use getaddrinfo IDNA conversion
Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
(cherry picked from commit 0749fa17ca8b30baa2cfca39762c490f1008f5b3)
Resolves: #1449149
---
traceroute6.c | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/traceroute6.c b/traceroute6.c
index 48fc5c5..aa75cd2 100644
--- a/traceroute6.c
+++ b/traceroute6.c
@@ -248,12 +248,13 @@
#endif
#ifdef USE_IDN
-#include <idna.h>
#include <locale.h>
+#define ADDRINFO_IDN_FLAGS AI_IDN
#define getnameinfo_flags NI_IDN
#else
#define getnameinfo_flags 0
+#define ADDRINFO_IDN_FLAGS 0
#endif
#include <arpa/inet.h>
@@ -335,7 +336,8 @@ int main(int argc, char *argv[])
char pa[NI_MAXHOST];
extern char *optarg;
extern int optind;
- struct addrinfo hints6 = { .ai_family = AF_INET6, .ai_socktype = SOCK_RAW, .ai_flags = AI_CANONNAME };
+ struct addrinfo hints6 = { .ai_family = AF_INET6, .ai_socktype = SOCK_RAW,
+ .ai_flags = AI_CANONNAME|ADDRINFO_IDN_FLAGS };
struct addrinfo *result;
int status;
struct sockaddr_in6 from, *to;
@@ -449,12 +451,7 @@ int main(int argc, char *argv[])
if (inet_pton(AF_INET6, *argv, &to->sin6_addr) > 0) {
hostname = *argv;
} else {
- char *idn = NULL;
-#ifdef USE_IDN
- if (idna_to_ascii_lz(*argv, &idn, 0) != IDNA_SUCCESS)
- idn = NULL;
-#endif
- status = getaddrinfo(idn ? idn : *argv, NULL, &hints6, &result);
+ status = getaddrinfo(*argv, NULL, &hints6, &result);
if (status) {
(void)fprintf(stderr,
"traceroute: %s: %s\n", *argv, gai_strerror(status));
--
2.13.6

View File

@ -1,103 +0,0 @@
From bf269b652f40a59de325b654e024c17daaea2eb3 Mon Sep 17 00:00:00 2001
From: Nikos Mavrogiannopoulos <nmav@gnutls.org>
Date: Mon, 14 Aug 2017 20:46:07 +0200
Subject: [PATCH 3/4] ping6: simplified IDNA usage
The function was converting from locale to UTF-8, performing some
check and then converting to IDNA form. Convert instead directly
to IDNA from locale format and perform the check afterwards.
Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
(cherry picked from commit 8f7b6908746f0eef3bb0f8fdf8b2a8c82ae9afe2)
Resolves: #1449149
---
ping6_common.c | 32 +++++++++-----------------------
1 file changed, 9 insertions(+), 23 deletions(-)
diff --git a/ping6_common.c b/ping6_common.c
index 498e590..bf4777d 100644
--- a/ping6_common.c
+++ b/ping6_common.c
@@ -435,14 +435,14 @@ static int niquery_option_subject_addr_handler(int index, const char *arg)
return 0;
}
-static int niquery_option_subject_name_handler(int index, const char *arg)
+static int niquery_option_subject_name_handler(int index, const char *name)
{
#ifdef USE_CRYPTO
static char nigroup_buf[INET6_ADDRSTRLEN + 1 + IFNAMSIZ];
unsigned char *dnptrs[2], **dpp, **lastdnptr;
int n;
int i;
- char *name, *p;
+ char *p;
char *canonname = NULL, *idn = NULL;
unsigned char *buf = NULL;
size_t namelen;
@@ -458,18 +458,19 @@ static int niquery_option_subject_name_handler(int index, const char *arg)
return -1;
#ifdef USE_IDN
- name = stringprep_locale_to_utf8(arg);
- if (!name) {
- fprintf(stderr, "ping6: IDN support failed.\n");
+ rc = idna_to_ascii_lz(name, &idn, 0);
+ if (rc) {
+ fprintf(stderr, "ping6: IDN encoding error: %s\n",
+ idna_strerror(rc));
exit(2);
}
#else
- name = strdup(arg);
- if (!name)
+ idn = strdup(name);
+ if (!idn)
goto oomexit;
#endif
- p = strchr(name, SCOPE_DELIMITER);
+ p = strchr(idn, SCOPE_DELIMITER);
if (p) {
*p = '\0';
if (strlen(p + 1) >= IFNAMSIZ) {
@@ -478,19 +479,6 @@ static int niquery_option_subject_name_handler(int index, const char *arg)
}
}
-#ifdef USE_IDN
- rc = idna_to_ascii_8z(name, &idn, 0);
- if (rc) {
- fprintf(stderr, "ping6: IDN encoding error: %s\n",
- idna_strerror(rc));
- exit(2);
- }
-#else
- idn = strdup(name);
- if (!idn)
- goto oomexit;
-#endif
-
namelen = strlen(idn);
canonname = malloc(namelen + 1);
if (!canonname)
@@ -552,7 +540,6 @@ static int niquery_option_subject_name_handler(int index, const char *arg)
free(canonname);
free(idn);
- free(name);
return 0;
oomexit:
@@ -561,7 +548,6 @@ errexit:
free(buf);
free(canonname);
free(idn);
- free(name);
exit(1);
#else
fprintf(stderr, "ping6: function not available; crypto disabled\n");
--
2.13.6

View File

@ -1,85 +0,0 @@
From fb283094c22b98d93aab8ae391ba8b499974cd70 Mon Sep 17 00:00:00 2001
From: Nikos Mavrogiannopoulos <nmav@gnutls.org>
Date: Mon, 14 Aug 2017 20:47:43 +0200
Subject: [PATCH 4/4] ping: use libidn2 instead of libidn
That is, to provide IDNA2008 support instead of IDNA2003.
See https://fedoraproject.org/wiki/Changes/IDNA2008
for more rationale.
That uses libidn2 idn2_lookup_ul() which is identical to
idn2_to_ascii_lz() but is available on all versions of
libidn2.
Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
(cherry picked from commit 665fe4d30ff8b6649454ae25e4768b2f23605332)
Resolves: #1449149
---
Makefile | 2 +-
ping.h | 3 +--
ping6_common.c | 12 ++++++++++--
3 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/Makefile b/Makefile
index 9f4f61f..ccaa0c3 100644
--- a/Makefile
+++ b/Makefile
@@ -13,7 +13,7 @@ LDFLAG_CAP=-lcap
LDFLAG_GCRYPT=-lgcrypt -lgpg-error
LDFLAG_NETTLE=-lnettle
LDFLAG_CRYPTO=-lcrypto
-LDFLAG_IDN=-lidn
+LDFLAG_IDN=-lidn2
LDFLAG_RESOLV=-lresolv
LDFLAG_SYSFS=-lsysfs
LDFLAG_RT=-lrt
diff --git a/ping.h b/ping.h
index 749f3ff..f57cd22 100644
--- a/ping.h
+++ b/ping.h
@@ -36,8 +36,7 @@
#ifdef USE_IDN
#include <locale.h>
-#include <idna.h>
-#include <stringprep.h>
+#include <idn2.h>
#define getaddrinfo_flags (AI_CANONNAME | AI_IDN | AI_CANONIDN)
#define getnameinfo_flags NI_IDN
#else
diff --git a/ping6_common.c b/ping6_common.c
index bf4777d..da37177 100644
--- a/ping6_common.c
+++ b/ping6_common.c
@@ -435,6 +435,14 @@ static int niquery_option_subject_addr_handler(int index, const char *arg)
return 0;
}
+#ifdef USE_IDN
+# if IDN2_VERSION_NUMBER >= 0x02000000
+# define IDN2_FLAGS IDN2_NONTRANSITIONAL
+# else
+# define IDN2_FLAGS 0
+# endif
+#endif
+
static int niquery_option_subject_name_handler(int index, const char *name)
{
#ifdef USE_CRYPTO
@@ -458,10 +466,10 @@ static int niquery_option_subject_name_handler(int index, const char *name)
return -1;
#ifdef USE_IDN
- rc = idna_to_ascii_lz(name, &idn, 0);
+ rc = idn2_lookup_ul(name, &idn, IDN2_FLAGS);
if (rc) {
fprintf(stderr, "ping6: IDN encoding error: %s\n",
- idna_strerror(rc));
+ idn2_strerror(rc));
exit(2);
}
#else
--
2.13.6

View File

@ -2,8 +2,8 @@
Summary: Network monitoring tools including ping
Name: iputils
Version: 20161105
Release: 9%{?dist}
Version: 20180629
Release: 1%{?dist}
# some parts are under the original BSD (ping.c)
# some are under GPLv2+ (tracepath.c)
License: BSD and GPLv2+
@ -20,10 +20,6 @@ Source5: https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
Patch0: iputils-rh.patch
Patch1: iputils-ifenslave.patch
Patch2: 0001-arping-tracepath-removed-unused-idna-header.patch
Patch3: 0002-traceroute6-use-getaddrinfo-IDNA-conversion.patch
Patch4: 0003-ping6-simplified-IDNA-usage.patch
Patch5: 0004-ping-use-libidn2-instead-of-libidn.patch
%if ! 0%{?_module_build}
BuildRequires: docbook-utils perl-SGMLSpm
@ -32,6 +28,7 @@ BuildRequires: glibc-kernheaders >= 2.4-8.19
BuildRequires: libidn2-devel
BuildRequires: openssl-devel
BuildRequires: libcap-devel
BuildRequires: libxslt docbook-style-xsl
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
@ -63,10 +60,6 @@ cp %{SOURCE4} %{SOURCE5} .
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%build
%ifarch s390 s390x
@ -118,10 +111,6 @@ install -dp ${RPM_BUILD_ROOT}%{_sysconfdir}/rc.d/init.d
install -m 644 %SOURCE2 ${RPM_BUILD_ROOT}/%{_unitdir}
install -m 644 %SOURCE3 ${RPM_BUILD_ROOT}/%{_unitdir}
iconv -f ISO88591 -t UTF8 RELNOTES -o RELNOTES.tmp
touch -r RELNOTES RELNOTES.tmp
mv -f RELNOTES.tmp RELNOTES
%post
%systemd_post rdisc.service
@ -141,7 +130,7 @@ mv -f RELNOTES.tmp RELNOTES
%systemd_postun_with_restart ninfod.service
%files
%doc RELNOTES README.bonding
%doc README.bonding
%{!?_licensedir:%global license %%doc}
%license bsd.txt gpl-2.0.txt
%{_unitdir}/rdisc.service
@ -174,6 +163,9 @@ mv -f RELNOTES.tmp RELNOTES
%endif
%changelog
* Tue Jul 3 2018 Jan Synáček <jsynacek@redhat.com> - 20180629-1
- update to s20180629 (#1596893)
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 20161105-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild