diff options
Diffstat (limited to 'src/inspircd.cpp')
-rw-r--r-- | src/inspircd.cpp | 39 |
1 files changed, 33 insertions, 6 deletions
diff --git a/src/inspircd.cpp b/src/inspircd.cpp index 78d84c22e..1e4a8abc3 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -1298,10 +1298,9 @@ int usercount(chanrec *c) /* add a channel to a user, creating the record for it if needed and linking * it to the user record */ -chanrec* add_channel(userrec *user, char* cname, char* key) +chanrec* add_channel(userrec *user, const char* cn, const char* key) { - - if ((!user) || (!cname)) + if ((!user) || (!cn)) { log(DEFAULT,"*** BUG *** add_channel was given an invalid parameter"); return 0; @@ -1310,6 +1309,9 @@ chanrec* add_channel(userrec *user, char* cname, char* key) int i = 0; chanrec* Ptr; int created = 0; + char cname[MAXBUF]; + + strncpy(cname,cn,MAXBUF); // we MUST declare this wherever we use FOREACH_RESULT int MOD_RESULT = 0; @@ -1482,7 +1484,7 @@ chanrec* add_channel(userrec *user, char* cname, char* key) /* remove a channel from a users record, and remove the record from memory * if the channel has become empty */ -chanrec* del_channel(userrec *user, char* cname, char* reason) +chanrec* del_channel(userrec *user, const char* cname, const char* reason) { if ((!user) || (!cname)) { @@ -3155,9 +3157,13 @@ void handle_restart(char **parameters, int pcnt, userrec *user) } -void kill_link(userrec *user,char* reason) +void kill_link(userrec *user,const char* r) { user_hash::iterator iter = clientlist.find(user->nick); + + char reason[MAXBUF]; + + strncpy(reason,r,MAXBUF); if (strlen(reason)>MAXQUIT) { @@ -4470,7 +4476,7 @@ void handle_oper(char **parameters, int pcnt, userrec *user) WriteServ(user->fd,"491 %s :Invalid oper credentials",user->nick); WriteOpers("*** WARNING! Failed oper attempt by %s!%s@%s!",user->nick,user->ident,user->host); } - + void handle_nick(char **parameters, int pcnt, userrec *user) { if (pcnt < 1) @@ -4549,6 +4555,27 @@ void handle_nick(char **parameters, int pcnt, userrec *user) log(DEBUG,"exit nickchange: %s",user->nick); } +void force_nickchange(userrec* user,const char* newnick) +{ + char nick[MAXBUF]; + strcpy(nick,""); + + if (user) + { + if (newnick) + { + strncpy(nick,newnick,MAXBUF); + } + if (user->registered == 7) + { + char* pars[1]; + pars[0] = nick; + handle_nick(pars,1,user); + } + } +} + + int process_parameters(char **command_p,char *parameters) { int i = 0; |