mo_kline(struct Client *client_p, struct Client *source_p,
int parc, const char **parv)
{
- char def[] = "No Reason";
char user[USERLEN + 2];
char host[HOSTLEN + 2];
char buffer[IRCD_BUFSIZE];
- char *reason = def;
+ char *reason;
char *oper_reason;
const char *current_date;
const char *target_server = NULL;
static int
ms_unkline(struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
{
- /* parv[0] parv[1] parv[2] parv[3]
- * oper target server user host */
+ /* source_p parv[1] parv[2] parv[3]
+ * oper target server user host */
propagate_generic(source_p, "UNKLINE", parv[1], CAP_UNKLN,
"%s %s", parv[2], parv[3]);
apply_kline(struct Client *source_p, struct ConfItem *aconf,
const char *reason, const char *oper_reason, const char *current_date)
{
- add_conf_by_address(aconf->host, CONF_KILL, aconf->user, aconf);
+ add_conf_by_address(aconf->host, CONF_KILL, aconf->user, NULL, aconf);
write_confitem(KLINE_TYPE, source_p, aconf->user, aconf->host,
reason, oper_reason, current_date, 0);
}
static int
valid_user_host(struct Client *source_p, const char *luser, const char *lhost)
{
- /* # is invalid, as are '!' (n!u@h kline) and '@' (u@@h kline) */
- if(strchr(lhost, '#') || strchr(luser, '#') || strchr(luser, '!') ||
+ /* # and " are invalid, as are '!' (n!u@h kline) and '@' (u@@h kline) */
+ if(strchr(lhost, '#') || strchr(luser, '#') || strchr(lhost, '"') ||
+ strchr(luser, '"') || strchr(luser, '!') ||
strchr(lhost, '@'))
{
sendto_one_notice(source_p, ":Invalid K-Line");
else
piphost = NULL;
- aconf = find_conf_by_address(lhost, NULL, NULL, (struct sockaddr *)piphost, CONF_KILL, t, luser);
+ aconf = find_conf_by_address(lhost, NULL, NULL, (struct sockaddr *)piphost, CONF_KILL, t, luser, NULL);
if (aconf != NULL)
{
/* The above was really a lookup of a single IP,