Reorder checks
Move oper and Conf_MorePrivacy checks after checking the number of parameters.
This commit is contained in:
parent
33c2d5e4e2
commit
37609d6a4f
|
@ -1317,10 +1317,6 @@ IRC_WHOWAS( CLIENT *Client, REQUEST *Req )
|
||||||
assert( Client != NULL );
|
assert( Client != NULL );
|
||||||
assert( Req != NULL );
|
assert( Req != NULL );
|
||||||
|
|
||||||
/* Do not reveal any info on disconnected users? */
|
|
||||||
if (Conf_MorePrivacy)
|
|
||||||
return CONNECTED;
|
|
||||||
|
|
||||||
/* Wrong number of parameters? */
|
/* Wrong number of parameters? */
|
||||||
if (Req->argc < 1)
|
if (Req->argc < 1)
|
||||||
return IRC_WriteErrClient(Client, ERR_NONICKNAMEGIVEN_MSG,
|
return IRC_WriteErrClient(Client, ERR_NONICKNAMEGIVEN_MSG,
|
||||||
|
@ -1330,6 +1326,10 @@ IRC_WHOWAS( CLIENT *Client, REQUEST *Req )
|
||||||
_IRC_GET_SENDER_OR_RETURN_(prefix, Req, Client)
|
_IRC_GET_SENDER_OR_RETURN_(prefix, Req, Client)
|
||||||
_IRC_GET_TARGET_SERVER_OR_RETURN_(target, Req, 2, prefix)
|
_IRC_GET_TARGET_SERVER_OR_RETURN_(target, Req, 2, prefix)
|
||||||
|
|
||||||
|
/* Do not reveal any info on disconnected users? */
|
||||||
|
if (Conf_MorePrivacy)
|
||||||
|
return CONNECTED;
|
||||||
|
|
||||||
/* Forward? */
|
/* Forward? */
|
||||||
if (target != Client_ThisServer()) {
|
if (target != Client_ThisServer()) {
|
||||||
IRC_WriteStrClientPrefix(target, prefix, "WHOWAS %s %s %s",
|
IRC_WriteStrClientPrefix(target, prefix, "WHOWAS %s %s %s",
|
||||||
|
|
|
@ -119,15 +119,15 @@ IRC_DIE(CLIENT * Client, REQUEST * Req)
|
||||||
assert(Client != NULL);
|
assert(Client != NULL);
|
||||||
assert(Req != NULL);
|
assert(Req != NULL);
|
||||||
|
|
||||||
if (!Op_Check(Client, Req))
|
|
||||||
return Op_NoPrivileges(Client, Req);
|
|
||||||
|
|
||||||
#ifdef STRICT_RFC
|
#ifdef STRICT_RFC
|
||||||
_IRC_ARGC_EQ_OR_RETURN_(Client, Req, 0)
|
_IRC_ARGC_EQ_OR_RETURN_(Client, Req, 0)
|
||||||
#else
|
#else
|
||||||
_IRC_ARGC_LE_OR_RETURN_(Client, Req, 1)
|
_IRC_ARGC_LE_OR_RETURN_(Client, Req, 1)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (!Op_Check(Client, Req))
|
||||||
|
return Op_NoPrivileges(Client, Req);
|
||||||
|
|
||||||
/* Is a message given? */
|
/* Is a message given? */
|
||||||
if (Req->argc > 0) {
|
if (Req->argc > 0) {
|
||||||
c = Conn_First();
|
c = Conn_First();
|
||||||
|
@ -162,11 +162,11 @@ IRC_REHASH( CLIENT *Client, REQUEST *Req )
|
||||||
assert( Client != NULL );
|
assert( Client != NULL );
|
||||||
assert( Req != NULL );
|
assert( Req != NULL );
|
||||||
|
|
||||||
|
_IRC_ARGC_EQ_OR_RETURN_(Client, Req, 0)
|
||||||
|
|
||||||
if (!Op_Check(Client, Req))
|
if (!Op_Check(Client, Req))
|
||||||
return Op_NoPrivileges(Client, Req);
|
return Op_NoPrivileges(Client, Req);
|
||||||
|
|
||||||
_IRC_ARGC_EQ_OR_RETURN_(Client, Req, 0)
|
|
||||||
|
|
||||||
Log(LOG_NOTICE|LOG_snotice, "Got REHASH command from \"%s\" ...",
|
Log(LOG_NOTICE|LOG_snotice, "Got REHASH command from \"%s\" ...",
|
||||||
Client_Mask(Client));
|
Client_Mask(Client));
|
||||||
IRC_WriteStrClient(Client, RPL_REHASHING_MSG, Client_ID(Client));
|
IRC_WriteStrClient(Client, RPL_REHASHING_MSG, Client_ID(Client));
|
||||||
|
@ -191,14 +191,14 @@ IRC_RESTART( CLIENT *Client, REQUEST *Req )
|
||||||
assert( Client != NULL );
|
assert( Client != NULL );
|
||||||
assert( Req != NULL );
|
assert( Req != NULL );
|
||||||
|
|
||||||
if (!Op_Check(Client, Req))
|
|
||||||
return Op_NoPrivileges(Client, Req);
|
|
||||||
|
|
||||||
/* Bad number of parameters? */
|
/* Bad number of parameters? */
|
||||||
if (Req->argc != 0)
|
if (Req->argc != 0)
|
||||||
return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
|
return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
|
||||||
Client_ID(Client), Req->command);
|
Client_ID(Client), Req->command);
|
||||||
|
|
||||||
|
if (!Op_Check(Client, Req))
|
||||||
|
return Op_NoPrivileges(Client, Req);
|
||||||
|
|
||||||
Log(LOG_NOTICE|LOG_snotice, "Got RESTART command from \"%s\" ...",
|
Log(LOG_NOTICE|LOG_snotice, "Got RESTART command from \"%s\" ...",
|
||||||
Client_Mask(Client));
|
Client_Mask(Client));
|
||||||
NGIRCd_SignalRestart = true;
|
NGIRCd_SignalRestart = true;
|
||||||
|
@ -221,10 +221,6 @@ IRC_CONNECT(CLIENT * Client, REQUEST * Req)
|
||||||
assert(Client != NULL);
|
assert(Client != NULL);
|
||||||
assert(Req != NULL);
|
assert(Req != NULL);
|
||||||
|
|
||||||
if (Client_Type(Client) != CLIENT_SERVER
|
|
||||||
&& !Client_HasMode(Client, 'o'))
|
|
||||||
return Op_NoPrivileges(Client, Req);
|
|
||||||
|
|
||||||
/* Bad number of parameters? */
|
/* Bad number of parameters? */
|
||||||
if (Req->argc != 1 && Req->argc != 2 && Req->argc != 3 &&
|
if (Req->argc != 1 && Req->argc != 2 && Req->argc != 3 &&
|
||||||
Req->argc != 5 && Req->argc != 6)
|
Req->argc != 5 && Req->argc != 6)
|
||||||
|
@ -236,6 +232,10 @@ IRC_CONNECT(CLIENT * Client, REQUEST * Req)
|
||||||
return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
|
return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
|
||||||
Client_ID(Client), Req->command);
|
Client_ID(Client), Req->command);
|
||||||
|
|
||||||
|
if (Client_Type(Client) != CLIENT_SERVER
|
||||||
|
&& !Client_HasMode(Client, 'o'))
|
||||||
|
return Op_NoPrivileges(Client, Req);
|
||||||
|
|
||||||
from = Client;
|
from = Client;
|
||||||
target = Client_ThisServer();
|
target = Client_ThisServer();
|
||||||
|
|
||||||
|
@ -325,14 +325,14 @@ IRC_DISCONNECT(CLIENT * Client, REQUEST * Req)
|
||||||
assert(Client != NULL);
|
assert(Client != NULL);
|
||||||
assert(Req != NULL);
|
assert(Req != NULL);
|
||||||
|
|
||||||
if (!Op_Check(Client, Req))
|
|
||||||
return Op_NoPrivileges(Client, Req);
|
|
||||||
|
|
||||||
/* Bad number of parameters? */
|
/* Bad number of parameters? */
|
||||||
if (Req->argc != 1)
|
if (Req->argc != 1)
|
||||||
return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
|
return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
|
||||||
Client_ID(Client), Req->command);
|
Client_ID(Client), Req->command);
|
||||||
|
|
||||||
|
if (!Op_Check(Client, Req))
|
||||||
|
return Op_NoPrivileges(Client, Req);
|
||||||
|
|
||||||
IRC_SendWallops(Client_ThisServer(), Client_ThisServer(),
|
IRC_SendWallops(Client_ThisServer(), Client_ThisServer(),
|
||||||
"Received DISCONNECT %s from %s",
|
"Received DISCONNECT %s from %s",
|
||||||
Req->argv[0], Client_ID(Client));
|
Req->argv[0], Client_ID(Client));
|
||||||
|
@ -412,15 +412,15 @@ IRC_xLINE(CLIENT *Client, REQUEST *Req)
|
||||||
assert(Client != NULL);
|
assert(Client != NULL);
|
||||||
assert(Req != NULL);
|
assert(Req != NULL);
|
||||||
|
|
||||||
from = Op_Check(Client, Req);
|
|
||||||
if (!from)
|
|
||||||
return Op_NoPrivileges(Client, Req);
|
|
||||||
|
|
||||||
/* Bad number of parameters? */
|
/* Bad number of parameters? */
|
||||||
if (Req->argc != 1 && Req->argc != 3)
|
if (Req->argc != 1 && Req->argc != 3)
|
||||||
return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
|
return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
|
||||||
Client_ID(Client), Req->command);
|
Client_ID(Client), Req->command);
|
||||||
|
|
||||||
|
from = Op_Check(Client, Req);
|
||||||
|
if (!from)
|
||||||
|
return Op_NoPrivileges(Client, Req);
|
||||||
|
|
||||||
switch(Req->command[0]) {
|
switch(Req->command[0]) {
|
||||||
case 'g':
|
case 'g':
|
||||||
case 'G':
|
case 'G':
|
||||||
|
|
|
@ -341,12 +341,12 @@ IRC_SQUIT(CLIENT * Client, REQUEST * Req)
|
||||||
assert(Client != NULL);
|
assert(Client != NULL);
|
||||||
assert(Req != NULL);
|
assert(Req != NULL);
|
||||||
|
|
||||||
|
_IRC_ARGC_EQ_OR_RETURN_(Client, Req, 2)
|
||||||
|
|
||||||
if (Client_Type(Client) != CLIENT_SERVER
|
if (Client_Type(Client) != CLIENT_SERVER
|
||||||
&& !Client_HasMode(Client, 'o'))
|
&& !Client_HasMode(Client, 'o'))
|
||||||
return Op_NoPrivileges(Client, Req);
|
return Op_NoPrivileges(Client, Req);
|
||||||
|
|
||||||
_IRC_ARGC_EQ_OR_RETURN_(Client, Req, 2)
|
|
||||||
|
|
||||||
if (Client_Type(Client) == CLIENT_SERVER && Req->prefix) {
|
if (Client_Type(Client) == CLIENT_SERVER && Req->prefix) {
|
||||||
from = Client_Search(Req->prefix);
|
from = Client_Search(Req->prefix);
|
||||||
if (Client_Type(from) != CLIENT_SERVER
|
if (Client_Type(from) != CLIENT_SERVER
|
||||||
|
|
Loading…
Reference in New Issue