icewm/src/wmdialog.cc | 17 +++++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-) diff --git a/icewm/src/wmdialog.cc b/icewm/src/wmdialog.cc index fb01995..f413a8d 100644 --- a/icewm/src/wmdialog.cc +++ b/icewm/src/wmdialog.cc @@ -41,6 +41,7 @@ bool canLock() { } bool canShutdown(bool reboot) { + char *copy; if (!reboot) if (shutdownCommand == 0 || shutdownCommand[0] == 0) return false; @@ -49,6 +50,22 @@ bool canShutdown(bool reboot) { return false; if (logoutCommand && logoutCommand[0]) return false; + if (reboot) + copy = strdup(rebootCommand); + else + copy = strdup(shutdownCommand); + + char *term = strchr(copy, ' '); + if (term) + *term = 0x0; + term = strchr(copy, '\t'); + if (term) + *term = 0x0; + char *whereis = findPath(getenv("PATH"), X_OK, copy); + if (whereis == 0) { + free(copy); + return false; + } #ifdef CONFIG_SESSION if (smapp->haveSessionManager()) return false;