Module: ngircd.git Branch: master Commit: e23f025dd6006eec2fe854ca0eaa623f0feb18ba URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=e23f0...
Author: Alexander Barton alex@barton.de Date: Sun Dec 25 16:52:31 2011 +0100
Op_Check(): return client that initiated the request or NULL
The old behavior of returning true/false is compatible to this change, so there are no other code changes required.
---
src/ngircd/op.c | 20 ++++++++++++++------ src/ngircd/op.h | 4 ++-- 2 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/src/ngircd/op.c b/src/ngircd/op.c index 7c0737f..c93133c 100644 --- a/src/ngircd/op.c +++ b/src/ngircd/op.c @@ -58,9 +58,15 @@ Op_NoPrivileges(CLIENT * Client, REQUEST * Req)
/** - * Check that the client is an IRC operator allowed to administer this server. + * Check that the originator of a request is an IRC operator and allowed + * to administer this server. + * + * @param CLient Client from which the command has been received. + * @param Req Request structure. + * @return CLIENT structure of the client that initiated the command or + * NULL if client is not allowed to execute operator commands. */ -GLOBAL bool +GLOBAL CLIENT * Op_Check(CLIENT * Client, REQUEST * Req) { CLIENT *c; @@ -72,15 +78,17 @@ Op_Check(CLIENT * Client, REQUEST * Req) c = Client_Search(Req->prefix); else c = Client; + if (!c) - return false; + return NULL; if (!Client_HasMode(c, 'o')) - return false; + return NULL; if (!Client_OperByMe(c) && !Conf_AllowRemoteOper) - return false; + return NULL; + /* The client is an local IRC operator, or this server is configured * to trust remote operators. */ - return true; + return c; } /* Op_Check */
diff --git a/src/ngircd/op.h b/src/ngircd/op.h index a1a84a3..71748eb 100644 --- a/src/ngircd/op.h +++ b/src/ngircd/op.h @@ -1,6 +1,6 @@ /* * ngIRCd -- The Next Generation IRC Daemon - * Copyright (c)2001-2009 Alexander Barton (alex@barton.de) + * Copyright (c)2001-2011 Alexander Barton (alex@barton.de) and Contributors. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,7 +18,7 @@ */
GLOBAL bool Op_NoPrivileges PARAMS((CLIENT * Client, REQUEST * Req)); -GLOBAL bool Op_Check PARAMS((CLIENT * Client, REQUEST * Req)); +GLOBAL CLIENT *Op_Check PARAMS((CLIENT * Client, REQUEST * Req));
#endif
ngircd-commits@lists.barton.de