summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2016-07-23 15:47:33 -0400
committerAdam <Adam@anope.org>2016-07-23 15:47:33 -0400
commit647f8cd4e639e230d80046ee5967f88a72bdee4a (patch)
tree9e5f2152cc8b71dbc350001647a04c4a99e89d0a
parentb2e25db1593e7e8a6490dd42ca7e9c93bf71552c (diff)
Add/fix various checks on source user existing in the protocol modules
-rw-r--r--modules/protocol/bahamut.cpp7
-rw-r--r--modules/protocol/charybdis.cpp6
-rw-r--r--modules/protocol/ngircd.cpp7
-rw-r--r--modules/protocol/unreal.cpp6
-rw-r--r--modules/protocol/unreal4.cpp6
5 files changed, 26 insertions, 6 deletions
diff --git a/modules/protocol/bahamut.cpp b/modules/protocol/bahamut.cpp
index 16d593fab..453050942 100644
--- a/modules/protocol/bahamut.cpp
+++ b/modules/protocol/bahamut.cpp
@@ -386,7 +386,12 @@ struct IRCDMessageNick : IRCDMessage
User::OnIntroduce(params[0], params[4], params[5], "", params[8], s, params[9], signon, params[3], "", na ? *na->nc : NULL);
}
else
- source.GetUser()->ChangeNick(params[0]);
+ {
+ User *u = source.GetUser();
+
+ if (u)
+ u->ChangeNick(params[0]);
+ }
}
};
diff --git a/modules/protocol/charybdis.cpp b/modules/protocol/charybdis.cpp
index f0d01c8cc..c43a290bc 100644
--- a/modules/protocol/charybdis.cpp
+++ b/modules/protocol/charybdis.cpp
@@ -195,7 +195,11 @@ class CharybdisProto : public IRCDProto
struct IRCDMessageEncap : IRCDMessage
{
- IRCDMessageEncap(Module *creator) : IRCDMessage(creator, "ENCAP", 3) { SetFlag(IRCDMESSAGE_SOFT_LIMIT);}
+ IRCDMessageEncap(Module *creator) : IRCDMessage(creator, "ENCAP", 3)
+ {
+ SetFlag(IRCDMESSAGE_SOFT_LIMIT);
+ SetFlag(IRCDMESSAGE_REQUIRE_USER);
+ }
void Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override
{
diff --git a/modules/protocol/ngircd.cpp b/modules/protocol/ngircd.cpp
index e7ae31fce..bcd4826f2 100644
--- a/modules/protocol/ngircd.cpp
+++ b/modules/protocol/ngircd.cpp
@@ -280,7 +280,7 @@ struct IRCDMessageChaninfo : IRCDMessage
struct IRCDMessageJoin : Message::Join
{
- IRCDMessageJoin(Module *creator) : Message::Join(creator, "JOIN") { }
+ IRCDMessageJoin(Module *creator) : Message::Join(creator, "JOIN") { SetFlag(IRCDMESSAGE_REQUIRE_USER); }
/*
* <@po||ux> DukeP: RFC 2813, 4.2.1: the JOIN command on server-server links
@@ -440,8 +440,11 @@ struct IRCDMessageNick : IRCDMessage
{
if (params.size() == 1)
{
+ User *u = source.GetUser();
+
// we have a nickchange
- source.GetUser()->ChangeNick(params[0]);
+ if (u)
+ u->ChangeNick(params[0]);
}
else if (params.size() == 7)
{
diff --git a/modules/protocol/unreal.cpp b/modules/protocol/unreal.cpp
index cff2f440b..c6fc4a1c0 100644
--- a/modules/protocol/unreal.cpp
+++ b/modules/protocol/unreal.cpp
@@ -929,7 +929,11 @@ struct IRCDMessageNick : IRCDMessage
User::OnIntroduce(params[0], params[3], params[4], vhost, ip, s, params[10], user_ts, params[7], "", na ? *na->nc : NULL);
}
else
- source.GetUser()->ChangeNick(params[0]);
+ {
+ User *u = source.GetUser();
+ if (u)
+ u->ChangeNick(params[0]);
+ }
}
};
diff --git a/modules/protocol/unreal4.cpp b/modules/protocol/unreal4.cpp
index 6e5f6ec55..b98de5ff2 100644
--- a/modules/protocol/unreal4.cpp
+++ b/modules/protocol/unreal4.cpp
@@ -966,7 +966,11 @@ struct IRCDMessageNick : IRCDMessage
User::OnIntroduce(params[0], params[3], params[4], vhost, ip, s, params[10], user_ts, params[7], "", na ? *na->nc : NULL);
}
else
- source.GetUser()->ChangeNick(params[0]);
+ {
+ User *u = source.GetUser();
+ if (u)
+ u->ChangeNick(params[0]);
+ }
}
};