From a77b2987bc90879af30a39ba274df9061cc7fbae Mon Sep 17 00:00:00 2001 From: Nathan Whitaker <17734409+nathanwhit@users.noreply.github.com> Date: Mon, 11 Mar 2024 15:49:43 -0700 Subject: fix(ext/node): Match punycode module behavior to node (#22847) Fixes #19214. We were using the `idna` crate to implement our polyfill for `punycode.toASCII` and `punycode.toUnicode`. The `idna` crate is correct, and adheres to the IDNA2003/2008 spec, but it turns out `node`'s implementations don't really follow any spec! Instead, node splits the domain by `'.'` and punycode encodes/decodes each part. This means that node's implementations will happily work on codepoints that are disallowed by the IDNA specs, causing the error in #19214. While fixing this, I went ahead and matched the node behavior on all of the punycode functions and enabled node's punycode test in our `node_compat` suite. --- ext/node/lib.rs | 2 ++ 1 file changed, 2 insertions(+) (limited to 'ext/node/lib.rs') diff --git a/ext/node/lib.rs b/ext/node/lib.rs index 6d5a21ace..f9553a038 100644 --- a/ext/node/lib.rs +++ b/ext/node/lib.rs @@ -261,6 +261,8 @@ deno_core::extension!(deno_node, ops::v8::op_vm_run_in_new_context, ops::idna::op_node_idna_domain_to_ascii, ops::idna::op_node_idna_domain_to_unicode, + ops::idna::op_node_idna_punycode_to_ascii, + ops::idna::op_node_idna_punycode_to_unicode, ops::idna::op_node_idna_punycode_decode, ops::idna::op_node_idna_punycode_encode, ops::zlib::op_zlib_new, -- cgit v1.2.3