Skip Menu |

This queue is for tickets about the Net-LibIDN2 CPAN distribution.

Report information
The Basics
Id: 125440
Status: resolved
Priority: 0/
Queue: Net-LibIDN2

People
Owner: Nobody in particular
Requestors: ppisar [...] redhat.com
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: 1.00
Fixed in: 1.01



Subject: t/001_basic.t fails with libidn2 2.0.5
After upgrading libidn2 from 2.0.4 to 2.0.5, t/001_basic.t fails like this: # Failed test at t/001_basic.t line 82. # got: 'IDN2_OK' # expected: 'IDN2_NOT_NFC' # Failed test at t/001_basic.t line 83. # got: '0' # expected: '-300' # Failed test at t/001_basic.t line 84. # got: 'example.xn--p39a' # expected: undef # Looks like you failed 3 tests of 57. libidn2-2.0.5 NEWS file reads: ** Switched the default library behavior to IDNA2008 as amended by TR#46 (non-transitional). That default behavior is enabled when no flags are specified to function calls. Applications can utilize the %IDN2_NO_TR46 flag to switch to the unamended IDNA2008. This is done in the interest of interoperability based on the fact that this is what application writers care about rather than strict compliance with a particular protocol. ** Fixed issue with STD3 rules applying in non-transitional TR46 mode.
Dne Čt 31.Květen.2018 06:22:29, ppisar napsal(a): Show quoted text
> After upgrading libidn2 from 2.0.4 to 2.0.5, t/001_basic.t fails like > this:
The attached patch fixes it for me.
Subject: Net-LibIDN2-1.00-Adapt-to-libidn-2.0.5.patch
From 1fb29989acde21148e5c36b3bdccbf2a4a88059c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com> Date: Thu, 31 May 2018 15:02:02 +0200 Subject: [PATCH] Adapt to libidn-2.0.5 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit libidn-2.0.5 enabled non-transitional TR46 by default. This caused a test failure. This patch adds IDN2_NO_TR46 flag, document the change and adapts the test. CPAN RT#125440 Signed-off-by: Petr Písař <ppisar@redhat.com> --- lib/Net/LibIDN2.pm | 11 +++++++++-- lib/Net/LibIDN2.xs | 3 +++ t/001_basic.t | 6 +++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/lib/Net/LibIDN2.pm b/lib/Net/LibIDN2.pm index b27aaa4..c6ca3bd 100644 --- a/lib/Net/LibIDN2.pm +++ b/lib/Net/LibIDN2.pm @@ -32,6 +32,7 @@ our %EXPORT_TAGS = ( 'all' => [ qw( IDN2_NONTRANSITIONAL IDN2_ALLOW_UNASSIGNED IDN2_USE_STD3_ASCII_RULES + IDN2_NO_TR46 ) ] ); our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } ); @@ -50,6 +51,7 @@ our @EXPORT = qw( IDN2_NONTRANSITIONAL IDN2_ALLOW_UNASSIGNED IDN2_USE_STD3_ASCII_RULES + IDN2_NO_TR46 ); our $VERSION = '1.00'; @@ -102,8 +104,10 @@ Pass B<IDN2_ALABEL_ROUNDTRIP> in flags to convert any input A-labels to U-labels and perform additional testing (not yet implemented). Pass IDN2_TRANSITIONAL to enable Unicode TR46 transitional processing, and IDN2_NONTRANSITIONAL to enable Unicode TR46 -non-transitional processing. Multiple flags may be specified -by binary or:ing them together, for example B<IDN2_NFC_INPUT> | B<IDN2_ALABEL_ROUNDTRIP>. +non-transitional processing. Pass IDN2_NO_TR46 (available since Libidn 2.0.5) +to disable any TR46 transitional or non-transitional processing. Multiple +flags may be specified by binary or:ing them together, for example +B<IDN2_NFC_INPUT> | B<IDN2_ALABEL_ROUNDTRIP>. If linked to library GNU Libidn version > 2.0.3: IDN2_USE_STD3_ASCII_RULES disabled by default. Previously we were eliminating non-STD3 characters from domain strings such as @@ -112,6 +116,9 @@ That was an unexpected regression for applications switching from libidn and thus it is no longer applied by default. Use IDN2_USE_STD3_ASCII_RULES to enable that behavior again. +If linked to library GNU Libidn version >= 2.0.5: IDNA2008 behavior amended by TR46 +(non-transitional) is default. + On error, returns undef. If a scalar variable is provided in I<$rc>, returns the internal libidn2 C library result code as well. diff --git a/lib/Net/LibIDN2.xs b/lib/Net/LibIDN2.xs index 5b2f7c3..027285a 100644 --- a/lib/Net/LibIDN2.xs +++ b/lib/Net/LibIDN2.xs @@ -25,6 +25,9 @@ BOOT: newCONSTSUB(stash, "IDN2_NONTRANSITIONAL", newSViv(IDN2_NONTRANSITIONAL)); newCONSTSUB(stash, "IDN2_ALLOW_UNASSIGNED", newSViv(IDN2_ALLOW_UNASSIGNED)); newCONSTSUB(stash, "IDN2_USE_STD3_ASCII_RULES", newSViv(IDN2_USE_STD3_ASCII_RULES)); +#if IDN2_VERSION_NUMBER >= 0x02000005 + newCONSTSUB(stash, "IDN2_NO_TR46", newSViv(IDN2_NO_TR46)); +#endif const char * diff --git a/t/001_basic.t b/t/001_basic.t index 3171478..ada1091 100644 --- a/t/001_basic.t +++ b/t/001_basic.t @@ -76,7 +76,11 @@ my $muesli_dot_de_punycode = "xn--mli-5ka8l.de"; my $rc = 0; my $result = Net::LibIDN2::idn2_lookup_u8( "\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe1\x84\x80\xe1\x85\xa1\xe1\x86\xa8", - 0, + (IDN2_VERSION_MAJOR > 2 || + (IDN2_VERSION_MAJOR == 2 && (IDN2_VERSION_MINOR > 0 || + IDN2_VERSION_MINOR == 0 && IDN2_VERSION_PATCH >= 5) + ) + ) ? IDN2_NO_TR46 : 0, $rc); is(Net::LibIDN2::idn2_strerror_name($rc), "IDN2_NOT_NFC"); -- 2.14.4
On Thu May 31 14:36:59 2018, ppisar wrote: Show quoted text
> Dne Čt 31.Květen.2018 06:22:29, ppisar napsal(a):
> > After upgrading libidn2 from 2.0.4 to 2.0.5, t/001_basic.t fails like > > this:
> > The attached patch fixes it for me.
Thanks Petr, will apply to upstream, verify and do a new release
Release containing patch was published in 2018
Err not I didn't do a release
On 2019-04-18 01:18:49, THOR wrote: Show quoted text
> Err not I didn't do a release
In the meanwhile, 1.01 exists, so this ticket probably may be closed (I cannot).