X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/652b8478fb78e4a90dfa73dcdf486eb7c9a0b9cc..885203035d6a873457e5c5eb12bff5c501d11179:/src/s_user.c diff --git a/src/s_user.c b/src/s_user.c index a6196d6..3580717 100644 --- a/src/s_user.c +++ b/src/s_user.c @@ -21,7 +21,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA * - * $Id: s_user.c 3219 2007-02-24 19:34:28Z jilles $ + * $Id: s_user.c 3368 2007-04-03 10:11:06Z nenolod $ */ #include "stdinc.h" @@ -415,21 +415,6 @@ register_local_user(struct Client *client_p, struct Client *source_p, const char return (CLIENT_EXITED); } - /* valid user name check */ - - if(!valid_username(source_p->username)) - { - sendto_realops_snomask(SNO_REJ, L_ALL, - "Invalid username: %s (%s@%s)", - source_p->name, source_p->username, source_p->host); - ServerStats->is_ref++; - ircsprintf(tmpstr2, "Invalid username [%s]", source_p->username); - exit_client(client_p, source_p, &me, tmpstr2); - return (CLIENT_EXITED); - } - - /* end of valid user name check */ - /* kline exemption extends to xline too */ if(!IsExemptKline(source_p) && find_xline(source_p->info, 1) != NULL) @@ -448,7 +433,7 @@ register_local_user(struct Client *client_p, struct Client *source_p, const char source_p->sockhost, source_p->preClient->dnsbl_listed->host); else { - dlink_list varlist; + dlink_list varlist = { NULL, NULL, 0 }; substitution_append_var(&varlist, "nick", source_p->name); substitution_append_var(&varlist, "ip", source_p->sockhost); @@ -473,6 +458,21 @@ register_local_user(struct Client *client_p, struct Client *source_p, const char } } + /* valid user name check */ + + if(!valid_username(source_p->username)) + { + sendto_realops_snomask(SNO_REJ, L_ALL, + "Invalid username: %s (%s@%s)", + source_p->name, source_p->username, source_p->host); + ServerStats->is_ref++; + ircsprintf(tmpstr2, "Invalid username [%s]", source_p->username); + exit_client(client_p, source_p, &me, tmpstr2); + return (CLIENT_EXITED); + } + + /* end of valid user name check */ + /* Store original hostname -- jilles */ strlcpy(source_p->orighost, source_p->host, HOSTLEN + 1); @@ -942,9 +942,11 @@ user_mode(struct Client *client_p, struct Client *source_p, int parc, const char *m = '\0'; sendto_one(source_p, form_str(RPL_UMODEIS), me.name, source_p->name, buf); + if (source_p->snomask != 0) - sendto_one(source_p, form_str(RPL_SNOMASK), me.name, source_p->name, + sendto_one_numeric(source_p, RPL_SNOMASK, form_str(RPL_SNOMASK), construct_snobuf(source_p->snomask)); + return 0; } @@ -1117,7 +1119,7 @@ user_mode(struct Client *client_p, struct Client *source_p, int parc, const char */ send_umode_out(client_p, source_p, setflags); if (showsnomask && MyConnect(source_p)) - sendto_one(source_p, form_str(RPL_SNOMASK), me.name, source_p->name, + sendto_one_numeric(source_p, RPL_SNOMASK, form_str(RPL_SNOMASK), construct_snobuf(source_p->snomask)); return (0); @@ -1217,14 +1219,11 @@ send_umode_out(struct Client *client_p, struct Client *source_p, int old) void user_welcome(struct Client *source_p) { - sendto_one(source_p, form_str(RPL_WELCOME), me.name, source_p->name, - ServerInfo.network_name, source_p->name); - sendto_one(source_p, form_str(RPL_YOURHOST), me.name, - source_p->name, + sendto_one_numeric(source_p, RPL_WELCOME, form_str(RPL_WELCOME), ServerInfo.network_name, source_p->name); + sendto_one_numeric(source_p, RPL_YOURHOST, form_str(RPL_YOURHOST), get_listener_name(source_p->localClient->listener), ircd_version); - - sendto_one(source_p, form_str(RPL_CREATED), me.name, source_p->name, creation); - sendto_one(source_p, form_str(RPL_MYINFO), me.name, source_p->name, me.name, ircd_version, umodebuf); + sendto_one_numeric(source_p, RPL_CREATED, form_str(RPL_CREATED), creation); + sendto_one_numeric(source_p, RPL_MYINFO, form_str(RPL_MYINFO), me.name, ircd_version, umodebuf); show_isupport(source_p); @@ -1312,7 +1311,7 @@ oper_up(struct Client *source_p, struct oper_conf *oper_p) if((old & UMODE_INVISIBLE) && !IsInvisible(source_p)) --Count.invisi; send_umode_out(source_p, source_p, old); - sendto_one(source_p, form_str(RPL_SNOMASK), me.name, source_p->name, + sendto_one_numeric(source_p, RPL_SNOMASK, form_str(RPL_SNOMASK), construct_snobuf(source_p->snomask)); sendto_one(source_p, form_str(RPL_YOUREOPER), me.name, source_p->name); sendto_one_notice(source_p, ":*** Oper privs are %s", get_oper_privs(oper_p->flags)); @@ -1452,8 +1451,8 @@ change_nick_user_host(struct Client *target_p, const char *nick, const char *use target_p->host, nick); } - strlcpy(target_p->username, user, USERLEN); - strlcpy(target_p->host, host, HOSTLEN); + strlcpy(target_p->username, user, sizeof target_p->username); + strlcpy(target_p->host, host, sizeof target_p->host); if (changed) add_history(target_p, 1);