Mercurial > prosody-hg
comparison plugins/mod_version.lua @ 13474:05c1098084cd
mod_version: Handle access denied from uname()
Discovered while experimenting with a stricter SystemCallFilter setting
See man:systemd.exec(5)
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sat, 06 Apr 2024 14:31:28 +0200 |
| parents | 74b9e05af71e |
| children | b9267ce1b183 |
comparison
equal
deleted
inserted
replaced
| 13473:9eb081616842 | 13474:05c1098084cd |
|---|---|
| 20 platform = "Windows"; | 20 platform = "Windows"; |
| 21 else | 21 else |
| 22 local os_version_command = module:get_option_string("os_version_command"); | 22 local os_version_command = module:get_option_string("os_version_command"); |
| 23 local ok, pposix = pcall(require, "prosody.util.pposix"); | 23 local ok, pposix = pcall(require, "prosody.util.pposix"); |
| 24 if not os_version_command and (ok and pposix and pposix.uname) then | 24 if not os_version_command and (ok and pposix and pposix.uname) then |
| 25 platform = pposix.uname().sysname; | 25 local ok, uname = pposix.uname(); |
| 26 if not ok then | |
| 27 module:log("debug", "Could not retrieve OS name: %s", uname); | |
| 28 else | |
| 29 platform = uname.sysname; | |
| 30 end | |
| 26 end | 31 end |
| 27 if not platform then | 32 if not platform then |
| 28 local uname = io.popen(os_version_command or "uname"); | 33 local uname = io.popen(os_version_command or "uname"); |
| 29 if uname then | 34 if uname then |
| 30 platform = uname:read("*a"); | 35 platform = uname:read("*a"); |
