aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2018-12-29 03:21:13 +0100
committerKim Alvefur <zash@zash.se>2018-12-29 03:21:13 +0100
commit5eb327274aa1ab27ec45b49e419943c264bd237d (patch)
treeaf1b603bcedd6e5853d15ce1cb5261a68b2eb7d8
parente6b7c91ebc9484c268fd5f0632abf4eb475ad7d6 (diff)
downloadprosody-5eb327274aa1ab27ec45b49e419943c264bd237d.tar.gz
prosody-5eb327274aa1ab27ec45b49e419943c264bd237d.zip
mod_admin_telnet: Validate hostnames in xmpp:ping command
Attempt to ping some invalid hostnames cause weird behavior
-rw-r--r--plugins/mod_admin_telnet.lua13
1 files changed, 11 insertions, 2 deletions
diff --git a/plugins/mod_admin_telnet.lua b/plugins/mod_admin_telnet.lua
index ee6a4176..f3731c8a 100644
--- a/plugins/mod_admin_telnet.lua
+++ b/plugins/mod_admin_telnet.lua
@@ -1088,8 +1088,17 @@ def_env.xmpp = {};
local st = require "util.stanza";
local new_id = require "util.id".medium;
function def_env.xmpp:ping(localhost, remotehost, timeout)
- if not prosody.hosts[localhost] then
- return nil, "No such host";
+ localhost = select(2, jid_split(localhost));
+ remotehost = select(2, jid_split(remotehost));
+ if not localhost then
+ return nil, "Invalid sender hostname";
+ elseif not prosody.hosts[localhost] then
+ return nil, "No such local host";
+ end
+ if not remotehost then
+ return nil, "Invalid destination hostname";
+ elseif prosody.hosts[remotehost] then
+ return nil, "Both hosts are local";
end
local iq = st.iq{ from=localhost, to=remotehost, type="get", id=new_id()}
:tag("ping", {xmlns="urn:xmpp:ping"});