| From 25899e849aa3abc1ad29ebf0b830262a859eaed5 Mon Sep 17 00:00:00 2001 |
| From: Petr Vorel <petr.vorel@gmail.com> |
| Date: Sat, 21 Jul 2018 17:46:14 +0200 |
| Subject: [PATCH] ping: Fix AI_CANONIDN usage on some systems |
| |
| Commit 99f67db used AI_CANONIDN in a way, which broke compilation on |
| systems where AI_CANONIDN is not defined in netdb.h (e.g. glibc < 2.3.4, |
| alternative libcs that don't support IDN: e.g. current musl 1.1.19 and |
| uClibc-ng 1.0.30) when not using the system libidn2. |
| |
| Fixes: 99f67db ping: Fix ping name encoded using ACE on C locale |
| |
| Reported-by: Nicholas Fish |
| Signed-off-by: Petr Vorel <petr.vorel@gmail.com> |
| --- |
| ping.c | 2 +- |
| ping.h | 2 +- |
| 2 files changed, 2 insertions(+), 2 deletions(-) |
| |
| diff --git a/ping.c b/ping.c |
| index 733477f..b241815 100644 |
| --- a/ping.c |
| +++ b/ping.c |
| @@ -207,9 +207,9 @@ main(int argc, char **argv) |
| |
| #ifdef USE_IDN |
| setlocale(LC_ALL, ""); |
| -#endif |
| if (!strcmp(setlocale(LC_ALL, NULL), "C")) |
| hints.ai_flags &= ~ AI_CANONIDN; |
| +#endif |
| |
| /* Support being called using `ping4` or `ping6` symlinks */ |
| if (argv[0][strlen(argv[0])-1] == '4') |
| diff --git a/ping.h b/ping.h |
| index 3e09685..8a0c4ef 100644 |
| --- a/ping.h |
| +++ b/ping.h |
| @@ -28,7 +28,6 @@ |
| #include <netinet/icmp6.h> |
| #include <linux/filter.h> |
| #include <resolv.h> |
| -#include <locale.h> |
| |
| #ifdef CAPABILITIES |
| #include <sys/prctl.h> |
| @@ -36,6 +35,7 @@ |
| #endif |
| |
| #ifdef USE_IDN |
| +#include <locale.h> |
| #include <idn2.h> |
| #define getaddrinfo_flags (AI_CANONNAME | AI_IDN | AI_CANONIDN) |
| #define getnameinfo_flags NI_IDN |
| -- |
| 2.19.0.rc2 |
| |