From c8a871e908f932d35e42a363c1f571fbf38c8982 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= Date: Tue, 29 Jan 2019 18:07:44 +0100 Subject: [PATCH] Fallback to ASCII on output IDN conversion error It is possible dig used ACE encoded name in locale, which does not support converting it to unicode. Instead of fatal error, fallback to ACE name on output. --- bin/dig/dighost.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/bin/dig/dighost.c b/bin/dig/dighost.c index 62da6e3a73..5bc3534bfc 100644 --- a/bin/dig/dighost.c +++ b/bin/dig/dighost.c @@ -4421,9 +4421,17 @@ idn_ace_to_locale(const char *src, char **dst) { */ res = idn2_to_unicode_8zlz(utf8_src, &local_src, 0); if (res != IDN2_OK) { - fatal("Cannot represent '%s' in the current locale (%s), " - "use +noidnout or a different locale", - src, idn2_strerror(res)); + /* + * Cannot represent in current locale. + * Output ACE form undecoded. + */ + res = idn2_to_ascii_8z(utf8_src, &local_src, 0); + if (res != IDN2_OK) { + fatal("Cannot represent '%s' " + "in the current locale nor ascii (%s), " + "use +noidnout or a different locale", + src, idn2_strerror(res)); + } } /*