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)
#
# 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.
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"
}