diff options
author | Kim Alvefur <zash@zash.se> | 2021-01-26 14:52:37 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2021-01-26 14:52:37 +0100 |
commit | 71267fd1116e47c3cbacdc13bf35de986960fbb3 (patch) | |
tree | abc5cd2ce959966cd704d304a4b6879ed46a8fe8 /plugins | |
parent | 2c09796dda3bdc1a98edf52e47a4b735df56ecdd (diff) | |
download | prosody-71267fd1116e47c3cbacdc13bf35de986960fbb3.tar.gz prosody-71267fd1116e47c3cbacdc13bf35de986960fbb3.zip |
mod_http_file_share: Validate that filename does not contain '/'
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/mod_http_file_share.lua | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/plugins/mod_http_file_share.lua b/plugins/mod_http_file_share.lua index 4c9dc9e9..89dda500 100644 --- a/plugins/mod_http_file_share.lua +++ b/plugins/mod_http_file_share.lua @@ -36,6 +36,7 @@ end local upload_errors = errors.init(module.name, namespace, { access = { "auth"; "forbidden" }; + filename = { "modify"; "bad-request", "Invalid filename" }; }); function may_upload(uploader, filename, filesize, filetype) -- > boolean, error @@ -44,6 +45,11 @@ function may_upload(uploader, filename, filesize, filetype) -- > boolean, error return false, upload_errors.new("access"); end + if not filename or filename:find"/" then + -- On Linux, only '/' and '\0' are invalid in filenames and NUL can't be in XML + return false, upload_errors.new("filename"); + end + return true; end |