X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/c52fe5f5f2701a9ca6c227a7d2839d67fd9fc4bf..b2c208be091670e3c5259eba77187bae6ac6eece:/modules/m_dline.c?ds=sidebyside diff --git a/modules/m_dline.c b/modules/m_dline.c index bb928ac4..1330a123 100644 --- a/modules/m_dline.c +++ b/modules/m_dline.c @@ -64,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 *); @@ -96,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)) @@ -251,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) @@ -292,6 +289,9 @@ apply_dline(struct Client *source_p, const char *dlhost, int tdline_time, char * 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) { @@ -403,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