From a9ced70eed74808eb18cc9d1b7b1f54ed93a8844 Mon Sep 17 00:00:00 2001 From: cyberbotx Date: Mon, 23 Mar 2009 00:55:22 +0000 Subject: [PATCH] Add opertype access checks to OS QUIT, OS RESTART, and OS SHUTDOWN, patch from Adam. git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2191 5417fbe8-f217-4b02-8779-1006273d7864 --- src/core/os_quit.c | 7 ++++++- src/core/os_restart.c | 7 ++++++- src/core/os_shutdown.c | 7 ++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/core/os_quit.c b/src/core/os_quit.c index 7639ed9de..6d9fc4f4d 100644 --- a/src/core/os_quit.c +++ b/src/core/os_quit.c @@ -26,6 +26,11 @@ class CommandOSQuit : public Command CommandReturn Execute(User *u, std::vector ¶ms) { + if (!u->nc->HasCommand("operserv/quit")) { + notice_lang(s_OperServ, u, PERMISSION_DENIED); + return MOD_STOP; + } + quitmsg = new char[28 + strlen(u->nick)]; if (!quitmsg) quitmsg = "QUIT command received, but out of memory!"; @@ -40,7 +45,7 @@ class CommandOSQuit : public Command bool OnHelp(User *u, const std::string &subcommand) { - if (!is_services_root(u)) + if (!u->nc->HasCommand("operserv/quit")) return false; notice_help(s_OperServ, u, OPER_HELP_QUIT); diff --git a/src/core/os_restart.c b/src/core/os_restart.c index 0bfaf7d9c..d5b668101 100644 --- a/src/core/os_restart.c +++ b/src/core/os_restart.c @@ -26,6 +26,11 @@ class CommandOSRestart : public Command CommandReturn Execute(User *u, std::vector ¶ms) { + if (!u->nc->HasCommand("operserv/restart")) { + notice_lang(s_OperServ, u, PERMISSION_DENIED); + return MOD_STOP; + } + #ifdef SERVICES_BIN quitmsg = new char[31 + strlen(u->nick)]; if (!quitmsg) @@ -45,7 +50,7 @@ class CommandOSRestart : public Command bool OnHelp(User *u, const std::string &subcommand) { - if (!is_services_root(u)) + if (!u->nc->HasCommand("operserv/restart")) return false; notice_help(s_OperServ, u, OPER_HELP_RESTART); diff --git a/src/core/os_shutdown.c b/src/core/os_shutdown.c index a23605f69..52e2c8e74 100644 --- a/src/core/os_shutdown.c +++ b/src/core/os_shutdown.c @@ -26,6 +26,11 @@ class CommandOSShutdown : public Command CommandReturn Execute(User *u, std::vector ¶ms) { + if (!u->nc->HasCommand("operserv/shutdown")) { + notice_lang(s_OperServ, u, PERMISSION_DENIED); + return MOD_STOP; + } + quitmsg = new char[32 + strlen(u->nick)]; if (!quitmsg) quitmsg = "SHUTDOWN command received, but out of memory!"; @@ -41,7 +46,7 @@ class CommandOSShutdown : public Command bool OnHelp(User *u, const std::string &subcommand) { - if (!is_services_root(u)) + if (!u->nc->HasCommand("operserv/shutdown")) return false; notice_help(s_OperServ, u, OPER_HELP_SHUTDOWN);