summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-06-24 14:43:36 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-06-24 14:43:36 +0000
commit7b0fcbfc069b201a8c295c956bcf2287abd26894 (patch)
tree238592a6e30d425af49b24902b7cf78e7e320513 /src
parent72e17538de4413021804daf3d3b9aa6991adde0d (diff)
Forwardport of safety fixes for Write* functions
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@4056 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src')
-rw-r--r--src/helperfuncs.cpp47
1 files changed, 26 insertions, 21 deletions
diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp
index b2c8c1b3b..d0009328c 100644
--- a/src/helperfuncs.cpp
+++ b/src/helperfuncs.cpp
@@ -155,11 +155,11 @@ void Write_NoFormat(int sock, const char *text)
if ((sock < 0) || (!text) || (sock > MAX_DESCRIPTORS))
return;
- bytes = snprintf(tb,MAXBUF,"%s\r\n",text);
- chop(tb);
-
if (fd_ref_table[sock])
{
+ bytes = snprintf(tb,MAXBUF,"%s\r\n",text);
+ chop(tb);
+
if (Config->GetIOHook(fd_ref_table[sock]->port))
{
try
@@ -200,14 +200,15 @@ void Write(int sock, char *text, ...)
return;
}
- va_start(argsPtr, text);
- vsnprintf(textbuffer, MAXBUF, text, argsPtr);
- va_end(argsPtr);
- bytes = snprintf(tb,MAXBUF,"%s\r\n",textbuffer);
- chop(tb);
-
if (fd_ref_table[sock])
{
+
+ va_start(argsPtr, text);
+ vsnprintf(textbuffer, MAXBUF, text, argsPtr);
+ va_end(argsPtr);
+ bytes = snprintf(tb,MAXBUF,"%s\r\n",textbuffer);
+ chop(tb);
+
if (Config->GetIOHook(fd_ref_table[sock]->port))
{
try
@@ -240,11 +241,11 @@ void WriteServ_NoFormat(int sock, const char* text)
if ((sock < 0) || (!text) || (sock > MAX_DESCRIPTORS))
return;
- bytes = snprintf(tb,MAXBUF,":%s %s\r\n",Config->ServerName,text);
- chop(tb);
-
if (fd_ref_table[sock])
{
+ bytes = snprintf(tb,MAXBUF,":%s %s\r\n",Config->ServerName,text);
+ chop(tb);
+
if (Config->GetIOHook(fd_ref_table[sock]->port))
{
try
@@ -283,6 +284,9 @@ void WriteServ(int sock, char* text, ...)
return;
}
+ if (!fd_ref_table[sock])
+ return;
+
va_start(argsPtr, text);
vsnprintf(textbuffer, MAXBUF, text, argsPtr);
va_end(argsPtr);
@@ -302,11 +306,11 @@ void WriteFrom_NoFormat(int sock, userrec *user, const char* text)
if ((sock < 0) || (!text) || (!user) || (sock > MAX_DESCRIPTORS))
return;
- bytes = snprintf(tb,MAXBUF,":%s %s\r\n",user->GetFullHost(),text);
- chop(tb);
-
if (fd_ref_table[sock])
{
+ bytes = snprintf(tb,MAXBUF,":%s %s\r\n",user->GetFullHost(),text);
+ chop(tb);
+
if (Config->GetIOHook(fd_ref_table[sock]->port))
{
try
@@ -346,14 +350,15 @@ void WriteFrom(int sock, userrec *user,char* text, ...)
return;
}
- va_start(argsPtr, text);
- vsnprintf(textbuffer, MAXBUF, text, argsPtr);
- va_end(argsPtr);
- bytes = snprintf(tb,MAXBUF,":%s %s\r\n",user->GetFullHost(),textbuffer);
- chop(tb);
-
if (fd_ref_table[sock])
{
+
+ va_start(argsPtr, text);
+ vsnprintf(textbuffer, MAXBUF, text, argsPtr);
+ va_end(argsPtr);
+ bytes = snprintf(tb,MAXBUF,":%s %s\r\n",user->GetFullHost(),textbuffer);
+ chop(tb);
+
if (Config->GetIOHook(fd_ref_table[sock]->port))
{
try