X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/a12ad0447205eeba2b4a2ecb9817b6e340920f62..b2c208be091670e3c5259eba77187bae6ac6eece:/modules/m_dline.c diff --git a/modules/m_dline.c b/modules/m_dline.c index 912091c2..1330a123 100644 --- a/modules/m_dline.c +++ b/modules/m_dline.c @@ -43,6 +43,7 @@ #include "parse.h" #include "modules.h" #include "bandbi.h" +#include "operhash.h" static int mo_dline(struct Client *, struct Client *, int, const char **); static int me_dline(struct Client *, struct Client *, int, const char **); @@ -63,7 +64,6 @@ mapi_clist_av1 dline_clist[] = { &dline_msgtab, &undline_msgtab, NULL }; DECLARE_MODULE_AV1(dline, NULL, NULL, dline_clist, NULL, NULL, "$Revision$"); -static int valid_comment(char *comment); static int remove_temp_dline(struct ConfItem *); static int apply_dline(struct Client *, const char *, int, char *); static int apply_undline(struct Client *, const char *); @@ -95,9 +95,15 @@ mo_dline(struct Client *client_p, struct Client *source_p, int parc, const char dlhost = parv[loc]; rb_strlcpy(cidr_form_host, dlhost, sizeof(cidr_form_host)); - loc++; + /* would break the protocol */ + if (*dlhost == ':') + { + sendto_one_notice(source_p, ":Invalid D-Line"); + return 0; + } + if(parc >= loc + 2 && !irccmp(parv[loc], "ON")) { if(!IsOperRemoteBan(source_p)) @@ -250,14 +256,6 @@ apply_dline(struct Client *source_p, const char *dlhost, int tdline_time, char * } } - if(!valid_comment(reason)) - { - sendto_one(source_p, - ":%s NOTICE %s :Invalid character '\"' in comment", - me.name, source_p->name); - return 0; - } - if(ConfigFileEntry.non_redundant_klines) { if((aconf = find_dline((struct sockaddr *) &daddr, t)) != NULL) @@ -289,6 +287,10 @@ apply_dline(struct Client *source_p, const char *dlhost, int tdline_time, char * aconf->created = rb_current_time(); aconf->host = rb_strdup(dlhost); aconf->passwd = rb_strdup(reason); + aconf->info.oper = operhash_add(get_oper_name(source_p)); + + if(strlen(reason) > BANREASONLEN) + reason[BANREASONLEN] = '\0'; /* Look for an oper reason */ if((oper_reason = strchr(reason, '|')) != NULL) @@ -401,25 +403,6 @@ apply_undline(struct Client *source_p, const char *cidr) return 0; } -/* - * valid_comment - * inputs - pointer to client - * - pointer to comment - * output - 0 if no valid comment, 1 if valid - * side effects - NONE - */ -static int -valid_comment(char *comment) -{ - if(strchr(comment, '"')) - return 0; - - if(strlen(comment) > BANREASONLEN) - comment[BANREASONLEN] = '\0'; - - return 1; -} - /* remove_temp_dline() * * inputs - confitem to undline