Ensure masskick(), massban(), unban(), ban() and remove_bans() send command to correct server
These commands use prepare_command() to find a channel to act on, which returns the server to use.
The code should then use my_send_to_server() to ensure that it sends the command to that server -
these functions were using send_to_server() which sends to 'from_server', which means that they
could send the commands to the wrong place, for example if they were called from a hook on a
different server.
This patch was created with the following coccinelle script:
// Detects pairing preprare_command() with send_to_server() (which uses from_server)
@prepare3@
identifier s;
local idexpression c;
expression E1, E2, E3, E4, E5;
@@
(
if ((c = prepare_command(&s,...)) != NULL && ...)
{
<...
(
- send_to_server(E1);
+ my_send_to_server(s, E1);
|
- send_to_server(E1,E2);
+ my_send_to_server(s, E1, E2);
|
- send_to_server(E1,E2,E3);
+ my_send_to_server(s, E1, E2, E3);
|
- send_to_server(E1,E2,E3,E4);
+ my_send_to_server(s, E1, E2, E3, E4);
|
- send_to_server(E1,E2,E3,E4,E5);
+ my_send_to_server(s, E1, E2, E3, E4, E5);
)
...>
}
|
if ((c = prepare_command(&s,...)) == NULL || ...) { ... return ...; }
{
<...
(
- send_to_server(E1);
+ my_send_to_server(s, E1);
|
- send_to_server(E1,E2);
+ my_send_to_server(s, E1, E2);
|
- send_to_server(E1,E2,E3);
+ my_send_to_server(s, E1, E2, E3);
|
- send_to_server(E1,E2,E3,E4);
+ my_send_to_server(s, E1, E2, E3, E4);
|
- send_to_server(E1,E2,E3,E4,E5);
+ my_send_to_server(s, E1, E2, E3, E4, E5);
)
...>
}
)
This commit is contained in:
@@ -1,5 +1,8 @@
|
|||||||
[Changes 1.2.2]
|
[Changes 1.2.2]
|
||||||
|
|
||||||
|
* Ensure /BAN /DBAN /MB /MK /MUB /UNBAN commands send command to the right
|
||||||
|
server. (caf)
|
||||||
|
|
||||||
* Fix "implied" operators (eg. += ) under NEW_MATH. (caf)
|
* Fix "implied" operators (eg. += ) under NEW_MATH. (caf)
|
||||||
|
|
||||||
* Add /SCANB command to scan for users on the userlist with the BOT flag. (caf)
|
* Add /SCANB command to scan for users on the userlist with the BOT flag. (caf)
|
||||||
|
|||||||
@@ -190,14 +190,14 @@ BUILT_IN_COMMAND(LameKick)
|
|||||||
(count >= get_int_var(NUM_KICKS_VAR))) ||
|
(count >= get_int_var(NUM_KICKS_VAR))) ||
|
||||||
(strlen(buf2) + len_buffer) >= (IRCD_BUFFER_SIZE - (NICKNAME_LEN + 5)))
|
(strlen(buf2) + len_buffer) >= (IRCD_BUFFER_SIZE - (NICKNAME_LEN + 5)))
|
||||||
{
|
{
|
||||||
send_to_server(buffer, chan->channel, buf2);
|
my_send_to_server(from_server, buffer, chan->channel, buf2);
|
||||||
new_free(&buf2);
|
new_free(&buf2);
|
||||||
count = 0;
|
count = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (buf2)
|
if (buf2)
|
||||||
send_to_server(buffer, chan->channel, buf2);
|
my_send_to_server(from_server, buffer, chan->channel, buf2);
|
||||||
new_free(&buffer);
|
new_free(&buffer);
|
||||||
new_free(&buf2);
|
new_free(&buf2);
|
||||||
say("Sent the Server all the Lamer Kicks, Sit back and Watch %d kicks!", total);
|
say("Sent the Server all the Lamer Kicks, Sit back and Watch %d kicks!", total);
|
||||||
@@ -695,12 +695,12 @@ BUILT_IN_COMMAND(masskick)
|
|||||||
if ((get_int_var(NUM_KICKS_VAR) && (num == get_int_var(NUM_KICKS_VAR))) || (strlen(send_buf)+len) >= (IRCD_BUFFER_SIZE - (NICKNAME_LEN + 5)))
|
if ((get_int_var(NUM_KICKS_VAR) && (num == get_int_var(NUM_KICKS_VAR))) || (strlen(send_buf)+len) >= (IRCD_BUFFER_SIZE - (NICKNAME_LEN + 5)))
|
||||||
{
|
{
|
||||||
num = 0;
|
num = 0;
|
||||||
send_to_server(buf, chan->channel, send_buf);
|
my_send_to_server(server, buf, chan->channel, send_buf);
|
||||||
new_free(&send_buf);
|
new_free(&send_buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (send_buf)
|
if (send_buf)
|
||||||
send_to_server(buf, chan->channel, send_buf);
|
my_send_to_server(server, buf, chan->channel, send_buf);
|
||||||
new_free(&send_buf);
|
new_free(&send_buf);
|
||||||
shitlist_erase(&masskick_list);
|
shitlist_erase(&masskick_list);
|
||||||
}
|
}
|
||||||
@@ -856,7 +856,7 @@ BUILT_IN_COMMAND(massban)
|
|||||||
if (i > maxmodes)
|
if (i > maxmodes)
|
||||||
{
|
{
|
||||||
modestr[i] = '\0';
|
modestr[i] = '\0';
|
||||||
send_to_server("MODE %s +%s %s", chan->channel, modestr, buffer);
|
my_send_to_server(server, "MODE %s +%s %s", chan->channel, modestr, buffer);
|
||||||
i = 0;
|
i = 0;
|
||||||
new_free(&buffer);
|
new_free(&buffer);
|
||||||
}
|
}
|
||||||
@@ -864,7 +864,7 @@ BUILT_IN_COMMAND(massban)
|
|||||||
modestr[i] = '\0';
|
modestr[i] = '\0';
|
||||||
if (buffer && *buffer)
|
if (buffer && *buffer)
|
||||||
{
|
{
|
||||||
send_to_server("MODE %s +%s %s", chan->channel, modestr, buffer);
|
my_send_to_server(server, "MODE %s +%s %s", chan->channel, modestr, buffer);
|
||||||
new_free(&buffer);
|
new_free(&buffer);
|
||||||
}
|
}
|
||||||
shitlist_erase(&massban_list);
|
shitlist_erase(&massban_list);
|
||||||
@@ -910,7 +910,7 @@ BUILT_IN_COMMAND(unban)
|
|||||||
{
|
{
|
||||||
if (bans->sent_unban == 0)
|
if (bans->sent_unban == 0)
|
||||||
{
|
{
|
||||||
send_to_server("MODE %s -b %s", chan->channel, bans->ban);
|
my_send_to_server(server, "MODE %s -b %s", chan->channel, bans->ban);
|
||||||
bans->sent_unban++;
|
bans->sent_unban++;
|
||||||
tmp = 0;
|
tmp = 0;
|
||||||
break;
|
break;
|
||||||
@@ -939,13 +939,13 @@ BUILT_IN_COMMAND(unban)
|
|||||||
}
|
}
|
||||||
if (count && (count % get_int_var(NUM_BANMODES_VAR) == 0))
|
if (count && (count % get_int_var(NUM_BANMODES_VAR) == 0))
|
||||||
{
|
{
|
||||||
send_to_server("MODE %s -%s %s", chan->channel, strfill('b', num), banstring);
|
my_send_to_server(server, "MODE %s -%s %s", chan->channel, strfill('b', num), banstring);
|
||||||
new_free(&banstring);
|
new_free(&banstring);
|
||||||
num = 0;
|
num = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (banstring && num)
|
if (banstring && num)
|
||||||
send_to_server("MODE %s -%s %s", chan->channel, strfill('b', num), banstring);
|
my_send_to_server(server, "MODE %s -%s %s", chan->channel, strfill('b', num), banstring);
|
||||||
new_free(&banstring);
|
new_free(&banstring);
|
||||||
}
|
}
|
||||||
if (!count)
|
if (!count)
|
||||||
@@ -1108,14 +1108,14 @@ BUILT_IN_COMMAND(ban)
|
|||||||
char *t = LOCAL_COPY(nicks->host), *user = clear_server_flags(t), *host = strchr(user, '@');
|
char *t = LOCAL_COPY(nicks->host), *user = clear_server_flags(t), *host = strchr(user, '@');
|
||||||
|
|
||||||
*host++ = 0;
|
*host++ = 0;
|
||||||
send_to_server("MODE %s -o+b %s %s", chan->channel, nicks->nick, ban_it(nicks->nick, user, host, nicks->ip));
|
my_send_to_server(server, "MODE %s -o+b %s %s", chan->channel, nicks->nick, ban_it(nicks->nick, user, host, nicks->ip));
|
||||||
found++;
|
found++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!found)
|
if (!found)
|
||||||
{
|
{
|
||||||
if (strchr(spec, '!') && strchr(spec, '@'))
|
if (strchr(spec, '!') && strchr(spec, '@'))
|
||||||
send_to_server("MODE %s +b %s", chan->channel, spec);
|
my_send_to_server(server, "MODE %s +b %s", chan->channel, spec);
|
||||||
else
|
else
|
||||||
userhostbase(spec, userhost_ban, 1, "%s", chan->channel);
|
userhostbase(spec, userhost_ban, 1, "%s", chan->channel);
|
||||||
}
|
}
|
||||||
@@ -1206,14 +1206,14 @@ void remove_bans(char *stuff, char *line)
|
|||||||
tmpc->sent_unban++;
|
tmpc->sent_unban++;
|
||||||
if (num % get_int_var(NUM_BANMODES_VAR) == 0)
|
if (num % get_int_var(NUM_BANMODES_VAR) == 0)
|
||||||
{
|
{
|
||||||
send_to_server("MODE %s -%s %s", stuff, strfill('b', num), banstring);
|
my_send_to_server(server, "MODE %s -%s %s", stuff, strfill('b', num), banstring);
|
||||||
new_free(&banstring);
|
new_free(&banstring);
|
||||||
num = 0;
|
num = 0;
|
||||||
}
|
}
|
||||||
done++;
|
done++;
|
||||||
}
|
}
|
||||||
if (banstring && num)
|
if (banstring && num)
|
||||||
send_to_server("MODE %s -%s %s", stuff, strfill('b', num), banstring);
|
my_send_to_server(server, "MODE %s -%s %s", stuff, strfill('b', num), banstring);
|
||||||
new_free(&banstring);
|
new_free(&banstring);
|
||||||
num = 0;
|
num = 0;
|
||||||
if (!done)
|
if (!done)
|
||||||
@@ -1227,7 +1227,7 @@ void remove_bans(char *stuff, char *line)
|
|||||||
tmpc->sent_unban++;
|
tmpc->sent_unban++;
|
||||||
if (num % get_int_var(NUM_BANMODES_VAR) == 0)
|
if (num % get_int_var(NUM_BANMODES_VAR) == 0)
|
||||||
{
|
{
|
||||||
send_to_server("MODE %s -%s %s", stuff, strfill('e', num), banstring);
|
my_send_to_server(server, "MODE %s -%s %s", stuff, strfill('e', num), banstring);
|
||||||
new_free(&banstring);
|
new_free(&banstring);
|
||||||
num = 0;
|
num = 0;
|
||||||
}
|
}
|
||||||
@@ -1235,7 +1235,7 @@ void remove_bans(char *stuff, char *line)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (banstring && num)
|
if (banstring && num)
|
||||||
send_to_server("MODE %s -%s %s", stuff, strfill('b', num), banstring);
|
my_send_to_server(server, "MODE %s -%s %s", stuff, strfill('b', num), banstring);
|
||||||
for (tmpc = chan->bans; tmpc; tmpc = next)
|
for (tmpc = chan->bans; tmpc; tmpc = next)
|
||||||
{
|
{
|
||||||
next = tmpc->next;
|
next = tmpc->next;
|
||||||
|
|||||||
Reference in New Issue
Block a user