summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/users.h14
-rw-r--r--src/helperfuncs.cpp6
-rw-r--r--src/inspircd_io.cpp10
-rw-r--r--src/users.cpp20
4 files changed, 16 insertions, 34 deletions
diff --git a/include/users.h b/include/users.h
index b5532f1e2..a5ec3191f 100644
--- a/include/users.h
+++ b/include/users.h
@@ -63,13 +63,13 @@ class ConnectClass : public classbase
int flood;
/** Host mask for this line
*/
- char host[MAXBUF];
+ std::string host;
/** Number of seconds between pings for this line
*/
int pingtime;
/** (Optional) Password for this line
*/
- char pass[MAXBUF];
+ std::string pass;
/** Threshold value for flood disconnect
*/
@@ -83,16 +83,8 @@ class ConnectClass : public classbase
*/
long recvqmax;
- ConnectClass()
+ ConnectClass() : registration_timeout(0), flood(0), host(""), pingtime(0), pass(""), threshold(0), sendqmax(0), recvqmax(0)
{
- registration_timeout = 0;
- flood = 0;
- pingtime = 0;
- threshold = 0;
- sendqmax = 0;
- recvqmax = 0;
- strlcpy(host,"",MAXBUF);
- strlcpy(pass,"",MAXBUF);
}
};
diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp
index 037a7a3af..3bc2bb79a 100644
--- a/src/helperfuncs.cpp
+++ b/src/helperfuncs.cpp
@@ -922,9 +922,9 @@ char* Passwd(userrec *user)
{
for (ClassVector::iterator i = Config->Classes.begin(); i != Config->Classes.end(); i++)
{
- if ((i->type == CC_ALLOW) && match(user->host,i->host))
+ if ((i->type == CC_ALLOW) && match(user->host,i->host.c_str()))
{
- return i->pass;
+ return (char*)i->pass.c_str();
}
}
return "";
@@ -934,7 +934,7 @@ bool IsDenied(userrec *user)
{
for (ClassVector::iterator i = Config->Classes.begin(); i != Config->Classes.end(); i++)
{
- if ((i->type == CC_DENY) && match(user->host,i->host))
+ if ((i->type == CC_DENY) && match(user->host,i->host.c_str()))
{
return true;
}
diff --git a/src/inspircd_io.cpp b/src/inspircd_io.cpp
index aa6c8e33a..1308a8dc9 100644
--- a/src/inspircd_io.cpp
+++ b/src/inspircd_io.cpp
@@ -211,7 +211,7 @@ void ServerConfig::Read(bool bail, userrec* user)
Classes.clear();
for (int i = 0; i < ConfValueEnum("connect",&Config->config_f); i++)
{
- strcpy(Value,"");
+ *Value = 0;
ConfValue("connect","allow",i,Value,&Config->config_f);
ConfValue("connect","timeout",i,timeout,&Config->config_f);
ConfValue("connect","flood",i,flood,&Config->config_f);
@@ -221,11 +221,11 @@ void ServerConfig::Read(bool bail, userrec* user)
ConfValue("connect","recvq",i,rqmax,&Config->config_f);
if (*Value)
{
- strlcpy(c.host,Value,MAXBUF);
+ c.host = Value;
c.type = CC_ALLOW;
strlcpy(Value,"",MAXBUF);
ConfValue("connect","password",i,Value,&Config->config_f);
- strlcpy(c.pass,Value,MAXBUF);
+ c.pass = Value;
c.registration_timeout = 90; // default is 2 minutes
c.pingtime = 120;
c.flood = atoi(flood);
@@ -257,10 +257,10 @@ void ServerConfig::Read(bool bail, userrec* user)
else
{
ConfValue("connect","deny",i,Value,&Config->config_f);
- strlcpy(c.host,Value,MAXBUF);
+ c.host = Value;
c.type = CC_DENY;
Classes.push_back(c);
- log(DEBUG,"Read connect class type DENY, host=%s",c.host);
+ log(DEBUG,"Read connect class type DENY, host=%s",c.host.c_str());
}
}
diff --git a/src/users.cpp b/src/users.cpp
index 6706e8fef..2993b31bb 100644
--- a/src/users.cpp
+++ b/src/users.cpp
@@ -63,23 +63,13 @@ template<typename T> inline string ConvToStr(const T &in)
userrec::userrec()
{
// the PROPER way to do it, AVOID bzero at *ALL* costs
- strcpy(nick,"");
+ *nick = *ident = *host = *dhost = *fullname = *modes = *awaymsg = *oper = 0;
strcpy(ip,"127.0.0.1");
- timeout = 0;
- strcpy(ident,"");
- strcpy(host,"");
- strcpy(dhost,"");
- strcpy(fullname,"");
- strcpy(modes,"");
server = (char*)FindServerNamePtr(Config->ServerName);
- strcpy(awaymsg,"");
- strcpy(oper,"");
reset_due = TIME;
- lines_in = 0;
- fd = lastping = signon = idle_lastmsg = nping = registered = 0;
- flood = port = bytes_in = bytes_out = cmds_in = cmds_out = 0;
- haspassed = false;
- dns_done = false;
+ lines_in = fd = lastping = signon = idle_lastmsg = nping = registered = 0;
+ timeout = flood = port = bytes_in = bytes_out = cmds_in = cmds_out = 0;
+ haspassed = dns_done = false;
recvq = "";
sendq = "";
chans.clear();
@@ -578,7 +568,7 @@ void AddClient(int socket, char* host, int port, bool iscached, char* ip)
for (ClassVector::iterator i = Config->Classes.begin(); i != Config->Classes.end(); i++)
{
- if (match(clientlist[tempnick]->host,i->host) && (i->type == CC_ALLOW))
+ if (match(clientlist[tempnick]->host,i->host.c_str()) && (i->type == CC_ALLOW))
{
class_regtimeout = (unsigned long)i->registration_timeout;
class_flood = i->flood;