diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/bahamut.c | 203 | ||||
| -rw-r--r-- | src/botserv.c | 3 | ||||
| -rw-r--r-- | src/channels.c | 11 | ||||
| -rw-r--r-- | src/chanserv.c | 18 | ||||
| -rw-r--r-- | src/compat.c | 1 | ||||
| -rw-r--r-- | src/config.c | 2 | ||||
| -rw-r--r-- | src/dreamforge.c | 194 | ||||
| -rw-r--r-- | src/hybrid.c | 193 | ||||
| -rw-r--r-- | src/log.c | 13 | ||||
| -rw-r--r-- | src/misc.c | 3 | ||||
| -rw-r--r-- | src/mysql.c | 6 | ||||
| -rw-r--r-- | src/nickserv.c | 26 | ||||
| -rw-r--r-- | src/protocol.c | 168 | ||||
| -rw-r--r-- | src/ptlink.c | 197 | ||||
| -rw-r--r-- | src/rageircd.c | 251 | ||||
| -rw-r--r-- | src/send.c | 111 | ||||
| -rw-r--r-- | src/sockutil.c | 1 | ||||
| -rw-r--r-- | src/ultimate2.c | 182 | ||||
| -rw-r--r-- | src/ultimate3.c | 185 | ||||
| -rw-r--r-- | src/unreal31.c | 183 | ||||
| -rw-r--r-- | src/unreal32.c | 181 | ||||
| -rw-r--r-- | src/viagra.c | 201 |
22 files changed, 1740 insertions, 593 deletions
diff --git a/src/bahamut.c b/src/bahamut.c index b605924d7..16c41795e 100644 --- a/src/bahamut.c +++ b/src/bahamut.c @@ -402,18 +402,26 @@ void anope_cmd_mode(char *source, char *dest, const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (!fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + + if (!buf) { + return; + } - if (ircdcap->tsmode) { - if (uplink_capab & ircdcap->tsmode) { - send_cmd(source, "MODE %s 0 %s", dest, buf); + if (ircdcap->tsmode) { + if (uplink_capab & ircdcap->tsmode) { + send_cmd(source, "MODE %s 0 %s", dest, buf); + } else { + send_cmd(source, "MODE %s %s", dest, buf); + } } else { send_cmd(source, "MODE %s %s", dest, buf); } - } else { - send_cmd(source, "MODE %s %s", dest, buf); } } @@ -652,9 +660,13 @@ void anope_cmd_part(char *nick, char *chan, const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (!fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } if (!nick || !chan) { return; @@ -714,13 +726,19 @@ void anope_cmd_svskill(char *source, char *user, const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - if (!source || !user) { + if (!source || !user || !fmt) { return; } va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + + if (!buf) { + return; + } send_cmd(source, "SVSKILL %s :%s", user, buf); } @@ -921,10 +939,18 @@ void anope_cmd_notice_ops(char *source, char *dest, const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - send_cmd(NULL, "NOTICE @%s :%s", dest, buf); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + + if (!buf) { + return; + } + send_cmd(NULL, "NOTICE @%s :%s", dest, buf); + } } /* NOTICE */ @@ -932,9 +958,16 @@ void anope_cmd_notice(char *source, char *dest, const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + } + if (!buf) { + return; + } if (UsePrivmsg) { anope_cmd_privmsg2(source, dest, buf); @@ -952,9 +985,16 @@ void anope_cmd_privmsg(char *source, char *dest, const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } send_cmd(source, "PRIVMSG %s :%s", dest, buf); } @@ -979,9 +1019,16 @@ void anope_cmd_global(char *source, const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } send_cmd(source ? source : ServerName, "GLOBOPS :%s", buf); } @@ -1000,9 +1047,16 @@ void anope_cmd_250(const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } send_cmd(NULL, "250 %s ", buf); } @@ -1012,9 +1066,16 @@ void anope_cmd_307(const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } send_cmd(ServerName, "307 %s ", buf); } @@ -1024,9 +1085,16 @@ void anope_cmd_311(const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } send_cmd(ServerName, "311 %s ", buf); } @@ -1036,9 +1104,16 @@ void anope_cmd_312(const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } send_cmd(ServerName, "312 %s ", buf); } @@ -1048,9 +1123,16 @@ void anope_cmd_317(const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } send_cmd(ServerName, "317 %s ", buf); } @@ -1094,9 +1176,17 @@ void anope_cmd_242(const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; + + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); send_cmd(NULL, "242 %s ", buf); } @@ -1105,9 +1195,16 @@ void anope_cmd_243(const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } send_cmd(NULL, "243 %s ", buf); } @@ -1117,9 +1214,17 @@ void anope_cmd_211(const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; + + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); send_cmd(NULL, "211 %s ", buf); } @@ -1135,9 +1240,13 @@ void anope_cmd_kick(char *source, char *chan, char *user, const char *fmt, { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } if (buf) { send_cmd(source, "KICK %s %s :%s", chan, user, buf); @@ -1183,9 +1292,13 @@ void anope_cmd_quit(char *source, const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } if (buf) { send_cmd(source, "QUIT :%s", buf); @@ -1296,4 +1409,14 @@ void anope_cmd_svid_umode3(User * u, char *ts) } } +/* NICK <newnick> */ +void anope_cmd_chg_nick(char *oldnick, char *newnick) +{ + if (!oldnick || !newnick) { + return; + } + + send_cmd(oldnick, "NICK %s", newnick); +} + #endif diff --git a/src/botserv.c b/src/botserv.c index 361662a31..03fdafdf5 100644 --- a/src/botserv.c +++ b/src/botserv.c @@ -6,7 +6,7 @@ * Please read COPYING and README for furhter details. * * Based on the original code of Epona by Lara. - * Based on the original code of Services by Andy Church. + * Based on the original code of Services by Andy Church. * * $Id$ * @@ -1025,6 +1025,7 @@ static void bot_kick(ChannelInfo * ci, User * u, int message, ...) if (!fmt) return; vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); av[0] = ci->name; av[1] = u->nick; diff --git a/src/channels.c b/src/channels.c index acb0caad8..9e32629e3 100644 --- a/src/channels.c +++ b/src/channels.c @@ -140,10 +140,15 @@ int chan_has_user_status(Channel * chan, User * user, int16 status) { struct u_chanlist *uc; - for (uc = user->chans; uc; uc = uc->next) - if (uc->chan == chan) + for (uc = user->chans; uc; uc = uc->next) { + if (uc->chan == chan) { + if (debug) { + alog("chan_has_user_status wanted %d the user is %d", + status, uc->status); + } return (uc->status & status); - + } + } return 0; } diff --git a/src/chanserv.c b/src/chanserv.c index 63f9bfeca..b3948cd25 100644 --- a/src/chanserv.c +++ b/src/chanserv.c @@ -2515,6 +2515,21 @@ static int do_register(User * u) return MOD_CONT; } + /* Confirm that the channel is in the RFC spec */ + if (*chan != '#' || *chan == '&') { + /* RFC says channels start with & or # so if the first is not # complain */ + notice_lang(s_ChanServ, u, CHAN_SYMBOL_REQUIRED); + return MOD_CONT; + } + + /* Throw a message that the channel is non existant */ + if (!(c = findchan(chan))) { + alog("%s: %s attempted to register a non-existant channel [%s] ", + s_ChanServ, u->nick, chan); + notice_lang(s_NickServ, u, CHAN_REGISTER_NONE_CHANNEL, chan); + return MOD_CONT; + } + if (!desc) { syntax_error(s_ChanServ, u, "REGISTER", CHAN_REGISTER_SYNTAX); } else if (*chan == '&') { @@ -2533,8 +2548,7 @@ static int do_register(User * u) } } else if (!stricmp(chan, "#")) { notice_lang(s_ChanServ, u, CHAN_MAY_NOT_BE_REGISTERED, chan); - } else if (!(c = findchan(chan)) - || !chan_has_user_status(c, u, CUS_OP)) { + } else if (!chan_has_user_status(c, u, CUS_OP)) { notice_lang(s_ChanServ, u, CHAN_MUST_BE_CHANOP); } else if (!is_servadmin && nc->channelmax > 0 diff --git a/src/compat.c b/src/compat.c index 15e99529b..65140933e 100644 --- a/src/compat.c +++ b/src/compat.c @@ -43,6 +43,7 @@ int snprintf(char *buf, size_t len, const char *fmt, ...) va_start(args, fmt); return vsnprintf(buf, len, fmt, args); + /* Again should have va_end() here */ } #endif /* !HAVE_SNPRINTF */ diff --git a/src/config.c b/src/config.c index e2d09f9e3..9a9209db6 100644 --- a/src/config.c +++ b/src/config.c @@ -655,6 +655,8 @@ void error(int linenum, char *message, ...) va_start(args, message); vsnprintf(buf, sizeof(buf), message, args); + va_end(args); + #ifndef NOT_MAIN if (linenum) alog("%s:%d: %s", SERVICES_CONF, linenum, buf); diff --git a/src/dreamforge.c b/src/dreamforge.c index e9c90aa5c..365ddf466 100644 --- a/src/dreamforge.c +++ b/src/dreamforge.c @@ -484,9 +484,13 @@ void anope_cmd_part(char *nick, char *chan, const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } if (!nick || !chan) { return; @@ -521,13 +525,20 @@ void anope_cmd_svskill(char *source, char *user, const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - if (!source || !user) { + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { return; } - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (!source || !user) { + return; + } send_cmd(source, "KILL %s :%s", user, buf); } @@ -582,9 +593,16 @@ void anope_cmd_global(char *source, const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } send_cmd(source ? source : ServerName, "GLOBOPS :%s", buf); } @@ -680,9 +698,17 @@ void anope_cmd_mode(char *source, char *dest, const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; + + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); send_cmd(source, "MODE %s %s", dest, buf); } @@ -690,9 +716,17 @@ void anope_cmd_notice_ops(char *source, char *dest, const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; + + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); send_cmd(NULL, "NOTICE @%s :%s", dest, buf); } @@ -701,9 +735,16 @@ void anope_cmd_notice(char *source, char *dest, const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } if (UsePrivmsg) { anope_cmd_privmsg2(source, dest, buf); @@ -721,9 +762,16 @@ void anope_cmd_privmsg(char *source, char *dest, const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } send_cmd(source, "PRIVMSG %s :%s", dest, buf); } @@ -755,9 +803,13 @@ void anope_cmd_quit(char *source, const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } if (buf) { send_cmd(source, "QUIT :%s", buf); @@ -780,9 +832,16 @@ void anope_cmd_250(const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } send_cmd(NULL, "250 %s ", buf); } @@ -792,9 +851,16 @@ void anope_cmd_307(const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } send_cmd(ServerName, "307 %s ", buf); } @@ -804,9 +870,16 @@ void anope_cmd_311(const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } send_cmd(ServerName, "311 %s ", buf); } @@ -816,9 +889,16 @@ void anope_cmd_312(const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } send_cmd(ServerName, "312 %s ", buf); } @@ -828,9 +908,16 @@ void anope_cmd_317(const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } send_cmd(ServerName, "317 %s ", buf); } @@ -874,9 +961,17 @@ void anope_cmd_242(const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; + + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); send_cmd(NULL, "242 %s ", buf); } @@ -885,9 +980,16 @@ void anope_cmd_243(const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } send_cmd(NULL, "243 %s ", buf); } @@ -897,9 +999,17 @@ void anope_cmd_211(const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; + + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); send_cmd(NULL, "211 %s ", buf); } @@ -916,9 +1026,13 @@ void anope_cmd_kick(char *source, char *chan, char *user, const char *fmt, { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } if (buf) { send_cmd(source, "KICK %s %s :%s", chan, user, buf); @@ -1120,4 +1234,14 @@ void anope_cmd_svid_umode3(User * u, char *ts) // not used } +/* NICK <newnick> */ +void anope_cmd_chg_nick(char *oldnick, char *newnick) +{ + if (!oldnick || !newnick) { + return; + } + + send_cmd(oldnick, "NICK %s", newnick); +} + #endif diff --git a/src/hybrid.c b/src/hybrid.c index 1a290f30b..53900431c 100644 --- a/src/hybrid.c +++ b/src/hybrid.c @@ -391,9 +391,16 @@ void anope_cmd_notice(char *source, char *dest, const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } if (UsePrivmsg) { anope_cmd_privmsg2(source, dest, buf); @@ -411,9 +418,16 @@ void anope_cmd_privmsg(char *source, char *dest, const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } send_cmd(source, "PRIVMSG %s :%s", dest, buf); } @@ -438,9 +452,16 @@ void anope_cmd_global(char *source, const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } send_cmd(source ? source : ServerName, "WALLOPS :%s", buf); } @@ -629,13 +650,20 @@ void anope_cmd_svskill(char *source, char *user, const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - if (!source || !user) { + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { return; } - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (!source || !user) { + return; + } send_cmd(source, "KILL %s :%s", user, buf); } @@ -696,11 +724,15 @@ void anope_cmd_part(char *nick, char *chan, const char *fmt, ...) { va_list args; char buf[BUFSIZE]; - + *buf = '\0'; if (fmt) { va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + + if (buf) { send_cmd(nick, "PART %s :%s", chan, buf); } else { send_cmd(nick, "PART %s", chan); @@ -850,9 +882,16 @@ void anope_cmd_250(const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } send_cmd(NULL, "250 %s ", buf); } @@ -862,9 +901,16 @@ void anope_cmd_307(const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } send_cmd(ServerName, "307 %s ", buf); } @@ -874,9 +920,16 @@ void anope_cmd_311(const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } send_cmd(ServerName, "311 %s ", buf); } @@ -886,9 +939,16 @@ void anope_cmd_312(const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } send_cmd(ServerName, "312 %s ", buf); } @@ -898,9 +958,16 @@ void anope_cmd_317(const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } send_cmd(ServerName, "317 %s ", buf); } @@ -944,9 +1011,17 @@ void anope_cmd_242(const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; + + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); send_cmd(NULL, "242 %s ", buf); } @@ -955,9 +1030,16 @@ void anope_cmd_243(const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } send_cmd(NULL, "243 %s ", buf); } @@ -967,9 +1049,17 @@ void anope_cmd_211(const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; + + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); send_cmd(NULL, "211 %s ", buf); } @@ -977,9 +1067,17 @@ void anope_cmd_mode(char *source, char *dest, const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; + + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); send_cmd(source, "MODE %s %s", dest, buf); } @@ -994,9 +1092,13 @@ void anope_cmd_kick(char *source, char *chan, char *user, const char *fmt, { va_list args; char buf[BUFSIZE]; + *buf = '\0'; - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } if (buf) { send_cmd(source, "KICK %s %s :%s", chan, user, buf); @@ -1009,9 +1111,17 @@ void anope_cmd_notice_ops(char *source, char *dest, const char *fmt, ...) { va_list args; char buf[BUFSIZE]; + *buf = '\0'; + + if (fmt) { + va_start(args, fmt); + vsnprintf(buf, BUFSIZE - 1, fmt, args); + va_end(args); + } + if (!buf) { + return; + } - va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); send_cmd(NUL |
