summaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-08-16 08:49:03 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-08-16 08:49:03 +0000
commit39f81682b1450b05e156c34a1426baa73bb9c67b (patch)
tree6bb9b3d3d55d54a04eff930980ce032a2e6b4dc2 /src/modules
parent57b6e22c08b6afb9497df986a4bd686df3b3c5b8 (diff)
Because the iterator can be whacked (and the item) inside of SetBan, make copies
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@4921 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/m_timedbans.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/modules/m_timedbans.cpp b/src/modules/m_timedbans.cpp
index bb1db4f63..61c0abaa3 100644
--- a/src/modules/m_timedbans.cpp
+++ b/src/modules/m_timedbans.cpp
@@ -166,9 +166,9 @@ class ModuleTimedBans : public Module
{
cr->WriteChannelWithServ(ServerInstance->Config->ServerName, "NOTICE %s :Timed ban on %s expired.", cr->name, i->mask.c_str());
const char *setban[3];
- setban[0] = i->channel.c_str();
+ setban[0] = strdup(i->channel.c_str());
setban[1] = "-b";
- setban[2] = i->mask.c_str();
+ setban[2] = strdup(i->mask.c_str());
// kludge alert!
// ::SendMode expects a userrec* to send the numeric replies
// back to, so we create it a fake user that isnt in the user
@@ -179,12 +179,14 @@ class ModuleTimedBans : public Module
ServerInstance->SendMode(setban,3,temp);
/* FIX: Send mode remotely*/
std::deque<std::string> n;
- n.push_back(i->channel);
+ n.push_back(setban[0]);
n.push_back("-b");
- n.push_back(i->mask);
+ n.push_back(setban[2]);
Event rmode((char *)&n, NULL, "send_mode");
rmode.Send(ServerInstance);
DELETE(temp);
+ free(setban[0]);
+ free(setban[2]);
}
else
{