]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Prevent "idna" test failures with libidn2 2.2.0+
authorMichał Kępień <michal@isc.org>
Wed, 26 Jun 2019 12:20:17 +0000 (14:20 +0200)
committerMichał Kępień <michal@isc.org>
Wed, 26 Jun 2019 12:41:10 +0000 (14:41 +0200)
libidn2 2.2.0+ parses Punycode more strictly than older versions and
thus "dig +idnin +noidnout xn--19g" fails with libidn2 2.2.0+ but
succeeds with older versions.

We could preserve the old behavior by using the IDN2_NO_ALABEL_ROUNDTRIP
flag available in libidn2 2.2.0+, but:

  - this change in behavior is considered a libidn2 bug fix [1],
  - we want to make sure dig behaves as expected, not libidn2,
  - implementing that would require additional configure.ac cruft.

Removing the problematic check appears to be the simplest solution as it
does not prevent the relevant block of checks in the "idna" system test
from achieving its purpose, i.e. ensuring dig properly handles invalid
U-labels.

[1] see upstream commit 241e8f486134793cb0f4a5b0e5817a97883401f5

(cherry picked from commit 60ce0ed411305d5bae38ab78921e7b0255207ab0)

bin/tests/system/idna/tests.sh

index 7acb0fa5f6f5116cb9befc71b6fc352a2868c18b..1bcf19af3630d183bd71cd6ee8f35eaee051dd28 100644 (file)
@@ -309,8 +309,10 @@ idna_enabled_test() {
     #
     # Symbols are not valid IDNA names.
     #
-    # Note that an invalid U-label is accepted even when +idnin is in effect
-    # because "xn--19g" is valid Punycode.
+    # Note that "+idnin +noidnout" is not tested because libidn2 2.2.0+ parses
+    # Punycode more strictly than older versions and thus dig fails with that
+    # combination of options with libidn2 2.2.0+ but succeeds with older
+    # versions.
     #
     # +noidnout: "dig" should send the ACE string to the server and display the
     #            returned qname.
@@ -322,7 +324,6 @@ idna_enabled_test() {
     idna_test "$text" ""                   "xn--19g" "xn--19g."
     idna_test "$text" "+noidnin +noidnout" "xn--19g" "xn--19g."
     idna_fail "$text" "+noidnin +idnout"   "xn--19g"
-    idna_test "$text" "+idnin   +noidnout" "xn--19g" "xn--19g."
     idna_fail "$text" "+idnin   +idnout"   "xn--19g"
 }