Mercurial > prosody-hg
changeset 14103:27e97e5b2c16 13.0
util.jid: Fix to reject IPv6 literal hosts without brackets
From RFC 7622:
> Implementation Note: Reuse of the IP-literal rule from [RFC6874]
> implies that IPv6 addresses are enclosed within square brackets (i.e.,
> beginning with '[' and ending with ']'), , which was not the case with
> the definition of the XMPP address format in [RFC3920] but which was
> changed in [RFC6122].
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sat, 14 Mar 2026 01:16:14 +0100 |
| parents | 3e6bb6ffbd43 |
| children | a1fb05cbd44e |
| files | spec/util_jid_spec.lua util/jid.lua |
| diffstat | 2 files changed, 3 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/spec/util_jid_spec.lua Wed Mar 11 16:53:48 2026 +0100 +++ b/spec/util_jid_spec.lua Sat Mar 14 01:16:14 2026 +0100 @@ -79,6 +79,7 @@ test("xmpp:test@example.com", nil, nil, nil); test("xmpp:example.com", nil, nil, nil); test("+123@bridge.example.com)", nil, nil, nil); + test("node@2001:db8::50:726f:736f:6479/foo", nil, nil, nil); end); it("should reject invalid arguments", function () assert.has_error(function () jid.prepped_split(false) end)
--- a/util/jid.lua Wed Mar 11 16:53:48 2026 +0100 +++ b/util/jid.lua Sat Mar 14 01:16:14 2026 +0100 @@ -52,7 +52,8 @@ local function valid_ip(ip) local v6 = match(ip, "^%[([%x:.]+)%]$"); - return net.pton(v6 or ip); + local v4 = match(ip, "^%d%d?%d?%.%d%d?%d?%.%d%d?%d?%.%d%d?%d?$"); + return (v6 or v4) and net.pton(v6 or v4); end local function prepped_split(jid, strict)
