}
// fcommands are only for local users. Spanningtree will send them back out as their original cmd.
- if (!user || !IS_LOCAL(user))
+ if (!IS_LOCAL(user))
{
return;
}
}
if ((u != NULL) && (!a->RequiredNick.empty()) && (a->ULineOnly))
{
- if (!ServerInstance->ULine(u->server))
+ if (!u->server->IsULine())
{
ServerInstance->SNO->WriteToSnoMask('a', "NOTICE -- Service "+a->RequiredNick+" required by alias "+a->AliasedCommand+" is not on a u-lined server, possibly underhanded antics detected!");
user->WriteNumeric(ERR_NOSUCHNICK, a->RequiredNick + " :is an imposter! Please inform an IRC operator as soon as possible.");
for (unsigned int i = 0; i < newline.length(); i++)
{
char c = newline[i];
- if (c == '$')
+ if ((c == '$') && (i + 1 < newline.length()))
{
if (isdigit(newline[i+1]))
{
- int len = (newline[i+2] == '-') ? 3 : 2;
+ int len = ((i + 2 < newline.length()) && (newline[i+2] == '-')) ? 3 : 2;
std::string var = newline.substr(i, len);
result.append(GetVar(var, original_line));
i += len - 1;