summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b <trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2004-11-20 05:45:44 +0000
committertrystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b <trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2004-11-20 05:45:44 +0000
commit623440ac9ed3a5600a081990f6d479d7042b7c09 (patch)
tree9b9ab222bdac61873e2616bdeff9260ceb2438f7 /src
parenta4c34ef876480a6a50079575cedca6899e5c2840 (diff)
BUILD : 1.7.6 (452) BUGS : N/A NOTES : 1. Fixed some config options could overflow strtol(), 2. Fixed CTCP Ping replies when UsePrivmsg is enabled
git-svn-id: svn://svn.anope.org/anope/trunk@452 31f1291d-b8d6-0310-a050-a5561fc1590b git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@306 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src')
-rw-r--r--src/bahamut.c21
-rw-r--r--src/botserv.c22
-rw-r--r--src/channels.c9
-rw-r--r--src/chanserv.c7
-rw-r--r--src/config.c6
-rw-r--r--src/dreamforge.c21
-rw-r--r--src/helpserv.c7
-rw-r--r--src/hostserv.c7
-rw-r--r--src/hybrid.c22
-rw-r--r--src/memoserv.c7
-rw-r--r--src/nickserv.c7
-rw-r--r--src/operserv.c7
-rw-r--r--src/ptlink.c21
-rw-r--r--src/rageircd.c21
-rw-r--r--src/ultimate2.c21
-rw-r--r--src/ultimate3.c21
-rw-r--r--src/unreal31.c21
-rw-r--r--src/unreal32.c21
-rw-r--r--src/viagra.c21
19 files changed, 262 insertions, 28 deletions
diff --git a/src/bahamut.c b/src/bahamut.c
index 67c4112c5..383e2cf4c 100644
--- a/src/bahamut.c
+++ b/src/bahamut.c
@@ -1626,4 +1626,25 @@ int anope_valid_nick(char *nick)
return 1;
}
+void anope_cmd_ctcp(char *source, char *dest, const char *fmt, ...)
+{
+ va_list args;
+ char buf[BUFSIZE];
+ char *s;
+ *buf = '\0';
+
+ if (fmt) {
+ va_start(args, fmt);
+ vsnprintf(buf, BUFSIZE - 1, fmt, args);
+ va_end(args);
+ }
+ if (!buf) {
+ return;
+ } else {
+ s = normalizeBuffer(buf);
+ }
+
+ send_cmd(source, "%s NOTICE :\1%s \1", dest, s);
+}
+
#endif
diff --git a/src/botserv.c b/src/botserv.c
index e0cd346ba..25986b566 100644
--- a/src/botserv.c
+++ b/src/botserv.c
@@ -147,9 +147,10 @@ void botserv(User * u, char *buf)
if (!cmd) {
return;
} else if (stricmp(cmd, "\1PING") == 0) {
- if (!(s = strtok(NULL, "")))
- s = "\1";
- notice(s_BotServ, u->nick, "\1PING %s", s);
+ if (!(s = strtok(NULL, ""))) {
+ s = "";
+ }
+ anope_cmd_ctcp(s_BotServ, u->nick, "PING %s", s);
} else if (skeleton) {
notice_lang(s_BotServ, u, SERVICE_OFFLINE, s_BotServ);
} else {
@@ -171,9 +172,10 @@ void botmsgs(User * u, BotInfo * bi, char *buf)
return;
if (!stricmp(cmd, "\1PING")) {
- if (!(s = strtok(NULL, "")))
- s = "\1";
- notice(bi->nick, u->nick, "\1PING %s", s);
+ if (!(s = strtok(NULL, ""))) {
+ s = "";
+ }
+ anope_cmd_ctcp(bi->nick, u->nick, "PING %s", s);
}
}
@@ -197,8 +199,9 @@ void botchanmsgs(User * u, ChannelInfo * ci, char *buf)
}
/* Answer to ping if needed, without breaking the buffer. */
- if (!strnicmp(buf, "\1PING", 5))
- notice(ci->bi->nick, u->nick, buf);
+ if (!strnicmp(buf, "\1PING", 5)) {
+ anope_cmd_ctcp(ci->bi->nick, u->nick, "PING %s", buf);
+ }
/* If it's a /me, cut the CTCP part at the beginning (not
* at the end, because one character just doesn't matter,
@@ -2484,6 +2487,9 @@ char *normalizeBuffer(char *buf)
for (i = 0; i < len; i++) {
switch (buf[i]) {
+ /* ctrl char */
+ case 1:
+ break;
/* Bold ctrl char */
case 2:
break;
diff --git a/src/channels.c b/src/channels.c
index eff7b5f96..7836f670d 100644
--- a/src/channels.c
+++ b/src/channels.c
@@ -306,8 +306,13 @@ void chan_set_user_status(Channel * chan, User * user, int16 status)
struct u_chanlist *uc;
if (HelpChannel && status == CUS_OP
- && !stricmp(chan->name, HelpChannel))
- common_svsmode(user, "+h", "1");
+ && !stricmp(chan->name, HelpChannel)) {
+ if (debug) {
+ alog("debug: %s being given +h for being a OP in %s",
+ user->nick, chan->name);
+ }
+ common_svsmode(user, "+h", NULL);
+ }
for (uc = user->chans; uc; uc = uc->next) {
if (uc->chan == chan) {
diff --git a/src/chanserv.c b/src/chanserv.c
index 8bdfed631..48da2e4b1 100644
--- a/src/chanserv.c
+++ b/src/chanserv.c
@@ -597,9 +597,10 @@ void chanserv(User * u, char *buf)
if (!cmd) {
return;
} else if (stricmp(cmd, "\1PING") == 0) {
- if (!(s = strtok(NULL, "")))
- s = "\1";
- notice(s_ChanServ, u->nick, "\1PING %s", s);
+ if (!(s = strtok(NULL, ""))) {
+ s = "";
+ }
+ anope_cmd_ctcp(s_ChanServ, u->nick, "PING %s", s);
} else if (skeleton) {
notice_lang(s_ChanServ, u, SERVICE_OFFLINE, s_ChanServ);
} else {
diff --git a/src/config.c b/src/config.c
index 51cce1a26..9c89141f1 100644
--- a/src/config.c
+++ b/src/config.c
@@ -808,6 +808,12 @@ int parse(char *buf, int linenum, int reload)
retval = 0;
break;
}
+ if (errno == ERANGE && val == LONG_MAX) {
+ /* well the true top off is 2,147,483,647 but lets not give them the real top */
+ error(linenum,
+ "%s: paramter %d is to large, reduce this value (0 to 2,147,483,646)",
+ d->name, optind);
+ }
*(int *) d->params[i].ptr = val;
break;
case PARAM_PORT:
diff --git a/src/dreamforge.c b/src/dreamforge.c
index 0d3e272e3..761166b1f 100644
--- a/src/dreamforge.c
+++ b/src/dreamforge.c
@@ -1372,4 +1372,25 @@ int anope_valid_nick(char *nick)
return 1;
}
+void anope_cmd_ctcp(char *source, char *dest, const char *fmt, ...)
+{
+ va_list args;
+ char buf[BUFSIZE];
+ char *s;
+ *buf = '\0';
+
+ if (fmt) {
+ va_start(args, fmt);
+ vsnprintf(buf, BUFSIZE - 1, fmt, args);
+ va_end(args);
+ }
+ if (!buf) {
+ return;
+ } else {
+ s = normalizeBuffer(buf);
+ }
+
+ send_cmd(source, "%s NOTICE :\1%s \1", dest, s);
+}
+
#endif
diff --git a/src/helpserv.c b/src/helpserv.c
index 336ee3049..7e4e1e8a9 100644
--- a/src/helpserv.c
+++ b/src/helpserv.c
@@ -50,9 +50,10 @@ void helpserv(User * u, char *buf)
if (!cmd) {
return;
} else if (stricmp(cmd, "\1PING") == 0) {
- if (!(s = strtok(NULL, "")))
- s = "\1";
- notice(s_HelpServ, u->nick, "\1PING %s", s);
+ if (!(s = strtok(NULL, ""))) {
+ s = "";
+ }
+ anope_cmd_ctcp(s_HelpServ, u->nick, "PING %s", s);
} else {
mod_run_cmd(s_HelpServ, u, HELPSERV, cmd);
}
diff --git a/src/hostserv.c b/src/hostserv.c
index c248de69e..1dcb087d0 100644
--- a/src/hostserv.c
+++ b/src/hostserv.c
@@ -100,9 +100,10 @@ void hostserv(User * u, char *buf)
if (!cmd) {
return;
} else if (stricmp(cmd, "\1PING") == 0) {
- if (!(s = strtok(NULL, "")))
- s = "\1";
- notice(s_HostServ, u->nick, "\1PING %s", s);
+ if (!(s = strtok(NULL, ""))) {
+ s = "";
+ }
+ anope_cmd_ctcp(s_HostServ, u->nick, "PING %s", s);
} else if (skeleton) {
notice_lang(s_HostServ, u, SERVICE_OFFLINE, s_HostServ);
} else {
diff --git a/src/hybrid.c b/src/hybrid.c
index 414585e18..3010d2fb5 100644
--- a/src/hybrid.c
+++ b/src/hybrid.c
@@ -1495,4 +1495,26 @@ int anope_valid_nick(char *nick)
return 1;
}
+void anope_cmd_ctcp(char *source, char *dest, const char *fmt, ...)
+{
+ va_list args;
+ char buf[BUFSIZE];
+ char *s;
+ *buf = '\0';
+
+ if (fmt) {
+ va_start(args, fmt);
+ vsnprintf(buf, BUFSIZE - 1, fmt, args);
+ va_end(args);
+ }
+ if (!buf) {
+ return;
+ } else {
+ s = normalizeBuffer(buf);
+ }
+
+ send_cmd(source, "%s NOTICE :\1%s \1", dest, s);
+}
+
+
#endif
diff --git a/src/memoserv.c b/src/memoserv.c
index 4c7d40463..7ef69f975 100644
--- a/src/memoserv.c
+++ b/src/memoserv.c
@@ -89,9 +89,10 @@ void memoserv(User * u, char *buf)
if (!cmd) {
return;
} else if (stricmp(cmd, "\1PING") == 0) {
- if (!(s = strtok(NULL, "")))
- s = "\1";
- notice(s_MemoServ, u->nick, "\1PING %s", s);
+ if (!(s = strtok(NULL, ""))) {
+ s = "";
+ }
+ anope_cmd_ctcp(s_MemoServ, u->nick, "PING %s", s);
} else if (skeleton) {
notice_lang(s_MemoServ, u, SERVICE_OFFLINE, s_MemoServ);
} else {
diff --git a/src/nickserv.c b/src/nickserv.c
index a22e33f8e..34bdd780d 100644
--- a/src/nickserv.c
+++ b/src/nickserv.c
@@ -337,9 +337,10 @@ void nickserv(User * u, char *buf)
if (!cmd) {
return;
} else if (stricmp(cmd, "\1PING") == 0) {
- if (!(s = strtok(NULL, "")))
- s = "\1";
- notice(s_NickServ, u->nick, "\1PING %s", s);
+ if (!(s = strtok(NULL, ""))) {
+ s = "";
+ }
+ anope_cmd_ctcp(s_NickServ, u->nick, "PING %s", s);
} else if (skeleton) {
notice_lang(s_NickServ, u, SERVICE_OFFLINE, s_NickServ);
} else {
diff --git a/src/operserv.c b/src/operserv.c
index 4fc711754..8f878c6aa 100644
--- a/src/operserv.c
+++ b/src/operserv.c
@@ -267,9 +267,10 @@ void operserv(User * u, char *buf)
if (!cmd) {
return;
} else if (stricmp(cmd, "\1PING") == 0) {
- if (!(s = strtok(NULL, "")))
- s = "\1";
- notice(s_OperServ, u->nick, "\1PING %s", s);
+ if (!(s = strtok(NULL, ""))) {
+ s = "";
+ }
+ anope_cmd_ctcp(s_OperServ, u->nick, "PING %s", s);
} else {
mod_run_cmd(s_OperServ, u, OPERSERV, cmd);
}
diff --git a/src/ptlink.c b/src/ptlink.c
index 6f6d50eb1..be54ef56f 100644
--- a/src/ptlink.c
+++ b/src/ptlink.c
@@ -1690,4 +1690,25 @@ int anope_valid_nick(char *nick)
return 1;
}
+void anope_cmd_ctcp(char *source, char *dest, const char *fmt, ...)
+{
+ va_list args;
+ char buf[BUFSIZE];
+ char *s;
+ *buf = '\0';
+
+ if (fmt) {
+ va_start(args, fmt);
+ vsnprintf(buf, BUFSIZE - 1, fmt, args);
+ va_end(args);
+ }
+ if (!buf) {
+ return;
+ } else {
+ s = normalizeBuffer(buf);
+ }
+
+ send_cmd(source, "%s NOTICE :\1%s \1", dest, s);
+}
+
#endif
diff --git a/src/rageircd.c b/src/rageircd.c
index 3a470be7a..d10a76728 100644
--- a/src/rageircd.c
+++ b/src/rageircd.c
@@ -1615,4 +1615,25 @@ int anope_valid_nick(char *nick)
return 1;
}
+void anope_cmd_ctcp(char *source, char *dest, const char *fmt, ...)
+{
+ va_list args;
+ char buf[BUFSIZE];
+ char *s;
+ *buf = '\0';
+
+ if (fmt) {
+ va_start(args, fmt);
+ vsnprintf(buf, BUFSIZE - 1, fmt, args);
+ va_end(args);
+ }
+ if (!buf) {
+ return;
+ } else {
+ s = normalizeBuffer(buf);
+ }
+
+ send_cmd(source, "%s NOTICE :\1%s \1", dest, s);
+}
+
#endif
diff --git a/src/ultimate2.c b/src/ultimate2.c
index 1f9563138..89c19b14c 100644
--- a/src/ultimate2.c
+++ b/src/ultimate2.c
@@ -1718,4 +1718,25 @@ int anope_valid_nick(char *nick)
return 1;
}
+void anope_cmd_ctcp(char *source, char *dest, const char *fmt, ...)
+{
+ va_list args;
+ char buf[BUFSIZE];
+ char *s;
+ *buf = '\0';
+
+ if (fmt) {
+ va_start(args, fmt);
+ vsnprintf(buf, BUFSIZE - 1, fmt, args);
+ va_end(args);
+ }
+ if (!buf) {
+ return;
+ } else {
+ s = normalizeBuffer(buf);
+ }
+
+ send_cmd(source, "%s NOTICE :\1%s \1", dest, s);
+}
+
#endif
diff --git a/src/ultimate3.c b/src/ultimate3.c
index e70daeb72..3b6dcb2a3 100644
--- a/src/ultimate3.c
+++ b/src/ultimate3.c
@@ -1782,4 +1782,25 @@ int anope_valid_nick(char *nick)
return 1;
}
+void anope_cmd_ctcp(char *source, char *dest, const char *fmt, ...)
+{
+ va_list args;
+ char buf[BUFSIZE];
+ char *s;
+ *buf = '\0';
+
+ if (fmt) {
+ va_start(args, fmt);
+ vsnprintf(buf, BUFSIZE - 1, fmt, args);
+ va_end(args);
+ }
+ if (!buf) {
+ return;
+ } else {
+ s = normalizeBuffer(buf);
+ }
+
+ send_cmd(source, "%s NOTICE :\1%s \1", dest, s);
+}
+
#endif
diff --git a/src/unreal31.c b/src/unreal31.c
index af642d385..775fa3420 100644
--- a/src/unreal31.c
+++ b/src/unreal31.c
@@ -1576,4 +1576,25 @@ int anope_valid_nick(char *nick)
return 1;
}
+void anope_cmd_ctcp(char *source, char *dest, const char *fmt, ...)
+{
+ va_list args;
+ char buf[BUFSIZE];
+ char *s;
+ *buf = '\0';
+
+ if (fmt) {
+ va_start(args, fmt);
+ vsnprintf(buf, BUFSIZE - 1, fmt, args);
+ va_end(args);
+ }
+ if (!buf) {
+ return;
+ } else {
+ s = normalizeBuffer(buf);
+ }
+
+ send_cmd(source, "%s NOTICE :\1%s \1", dest, s);
+}
+
#endif
diff --git a/src/unreal32.c b/src/unreal32.c
index 22ed19965..77f8161f9 100644
--- a/src/unreal32.c
+++ b/src/unreal32.c
@@ -2151,4 +2151,25 @@ int anope_valid_nick(char *nick)
return 1;
}
+void anope_cmd_ctcp(char *source, char *dest, const char *fmt, ...)
+{
+ va_list args;
+ char buf[BUFSIZE];
+ char *s;
+ *buf = '\0';
+
+ if (fmt) {
+ va_start(args, fmt);
+ vsnprintf(buf, BUFSIZE - 1, fmt, args);
+ va_end(args);
+ }
+ if (!buf) {
+ return;
+ } else {
+ s = normalizeBuffer(buf);
+ }
+
+ send_cmd(source, "%s %s :\1%s \1", send_token("NOTICE", "B"), dest, s);
+}
+
#endif
diff --git a/src/viagra.c b/src/viagra.c
index 34ef38fba..b778fe2c7 100644
--- a/src/viagra.c
+++ b/src/viagra.c
@@ -1691,4 +1691,25 @@ int anope_valid_nick(char *nick)
return 1;
}
+void anope_cmd_ctcp(char *source, char *dest, const char *fmt, ...)
+{
+ va_list args;
+ char buf[BUFSIZE];
+ char *s;
+ *buf = '\0';
+
+ if (fmt) {
+ va_start(args, fmt);
+ vsnprintf(buf, BUFSIZE - 1, fmt, args);
+ va_end(args);
+ }
+ if (!buf) {
+ return;
+ } else {
+ s = normalizeBuffer(buf);
+ }
+
+ send_cmd(source, "%s NOTICE :\1%s \1", dest, s);
+}
+
#endif