getaddrinfo() does not implement IDN encoding, and always fail when
provided an IDN flag (e.g., AI_IDN) with EAI_BADFLAGS. Some packages
(such as the VLC media player) check for AI_IDN before they use it;
providing an unimplemented AI_IDN in the libc makes these package
fail. As a result they make calls to getaddrinfo() with AI_IDN that
always fail while they could have made successful calls without AI_IDN
instead.
Thus, do not define IDN flags: it is better not to compile rather than
to compile a code that always fail.
Signed-off-by: Thomas Claveirole <thomas.claveirole(a)green-communications.fr>
---
include/netdb.h | 11 -----------
1 file changed, 11 deletions(-)
diff --git a/include/netdb.h b/include/netdb.h
index a636b5f..95abe95 100644
--- a/include/netdb.h
+++ b/include/netdb.h
@@ -627,16 +627,6 @@ struct addrinfo
# define AI_ALL 0x0010 /* Return IPv4 mapped and IPv6 addresses. */
# define AI_ADDRCONFIG 0x0020 /* Use configuration of this host to choose
returned address type.. */
-# ifdef __USE_GNU
-# define AI_IDN 0x0040 /* IDN encode input (assuming it is encoded
- in the current locale's character set)
- before looking it up. */
-# define AI_CANONIDN 0x0080 /* Translate canonical name from IDN format. */
-# define AI_IDN_ALLOW_UNASSIGNED 0x0100 /* Don't reject unassigned Unicode
- code points. */
-# define AI_IDN_USE_STD3_ASCII_RULES 0x0200 /* Validate strings according to
- STD3 rules. */
-# endif
# define AI_NUMERICSERV 0x0400 /* Don't use name resolution. */
/* Error values for `getaddrinfo' function. */
@@ -658,7 +648,6 @@ struct addrinfo
# define EAI_NOTCANCELED -102 /* Request not canceled. */
# define EAI_ALLDONE -103 /* All requests done. */
# define EAI_INTR -104 /* Interrupted by a signal. */
-# define EAI_IDN_ENCODE -105 /* IDN encoding failed. */
# endif
# ifdef __USE_MISC
--
2.7.0