Software /
code /
prosody
Changeset
12190:3616128cd2e3
util.jid: Explicitly check for nil rather than falsy
A boolean false should blow up.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 15 Jan 2022 16:25:25 +0100 |
parents | 12189:82c8e855c850 |
children | 12191:8b57362f1176 |
files | spec/util_jid_spec.lua util/jid.lua |
diffstat | 2 files changed, 25 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/spec/util_jid_spec.lua Sat Jan 15 15:40:29 2022 +0100 +++ b/spec/util_jid_spec.lua Sat Jan 15 16:25:25 2022 +0100 @@ -13,6 +13,11 @@ assert.are.equal(jid.join(nil, nil, "c"), nil, "invalid JID is nil"); assert.are.equal(jid.join("a", nil, "c"), nil, "invalid JID is nil"); end); + it("should reject invalid arguments", function () + assert.has_error(function () jid.join(false, "bork", nil) end) + assert.has_error(function () jid.join(nil, "bork", false) end) + assert.has_error(function () jid.join(false, false, false) end) + end) end); describe("#split()", function() it("should work", function() @@ -38,6 +43,9 @@ test("@server/resource", nil, nil, nil); test("@/resource", nil, nil, nil); end); + it("should reject invalid arguments", function () + assert.has_error(function () jid.split(false) end) + end) end); @@ -59,6 +67,9 @@ assert.are.equal(jid.bare("user@@host/resource"), nil, "invalid JID is nil"); assert.are.equal(jid.bare("user@host/"), nil, "invalid JID is nil"); end); + it("should reject invalid arguments", function () + assert.has_error(function () jid.bare(false) end) + end) end); describe("#compare()", function()
--- a/util/jid.lua Sat Jan 15 15:40:29 2022 +0100 +++ b/util/jid.lua Sat Jan 15 16:25:25 2022 +0100 @@ -32,18 +32,18 @@ -- luacheck: std none local function split(jid) - if not jid then return; end + if jid == nil then return; end local node, nodepos = match(jid, "^([^@/]+)@()"); local host, hostpos = match(jid, "^([^@/]+)()", nodepos); - if node and not host then return nil, nil, nil; end + if node ~= nil and host == nil then return nil, nil, nil; end local resource = match(jid, "^/(.+)$", hostpos); - if (not host) or ((not resource) and #jid >= hostpos) then return nil, nil, nil; end + if (host == nil) or ((resource == nil) and #jid >= hostpos) then return nil, nil, nil; end return node, host, resource; end local function bare(jid) local node, host = split(jid); - if node and host then + if node ~= nil and host ~= nil then return node.."@"..host; end return host; @@ -51,31 +51,31 @@ local function prepped_split(jid, strict) local node, host, resource = split(jid); - if host and host ~= "." then + if host ~= nil and host ~= "." then if sub(host, -1, -1) == "." then -- Strip empty root label host = sub(host, 1, -2); end host = nameprep(host, strict); - if not host then return; end - if node then + if host == nil then return; end + if node ~= nil then node = nodeprep(node, strict); - if not node then return; end + if node == nil then return; end end - if resource then + if resource ~= nil then resource = resourceprep(resource, strict); - if not resource then return; end + if resource == nil then return; end end return node, host, resource; end end local function join(node, host, resource) - if not host then return end - if node and resource then + if host == nil then return end + if node ~= nil and resource ~= nil then return node.."@"..host.."/"..resource; - elseif node then + elseif node ~= nil then return node.."@"..host; - elseif resource then + elseif resource ~= nil then return host.."/"..resource; end return host;