Disallow the sequence '",' in perm xlines,
it would cause problems with xline.conf.
This commit is contained in:
parent
44bdc688cb
commit
b6c85cc60b
|
@ -70,7 +70,7 @@ struct Message unxline_msgtab = {
|
||||||
mapi_clist_av1 xline_clist[] = { &xline_msgtab, &unxline_msgtab, NULL };
|
mapi_clist_av1 xline_clist[] = { &xline_msgtab, &unxline_msgtab, NULL };
|
||||||
DECLARE_MODULE_AV1(xline, NULL, NULL, xline_clist, NULL, NULL, "$Revision: 3161 $");
|
DECLARE_MODULE_AV1(xline, NULL, NULL, xline_clist, NULL, NULL, "$Revision: 3161 $");
|
||||||
|
|
||||||
static int valid_xline(struct Client *, const char *, const char *);
|
static int valid_xline(struct Client *, const char *, const char *, int);
|
||||||
static void apply_xline(struct Client *client_p, const char *name,
|
static void apply_xline(struct Client *client_p, const char *name,
|
||||||
const char *reason, int temp_time);
|
const char *reason, int temp_time);
|
||||||
static void write_xline(struct Client *source_p, struct ConfItem *aconf);
|
static void write_xline(struct Client *source_p, struct ConfItem *aconf);
|
||||||
|
@ -161,7 +161,7 @@ mo_xline(struct Client *client_p, struct Client *source_p, int parc, const char
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!valid_xline(source_p, name, reason))
|
if(!valid_xline(source_p, name, reason, temp_time))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
apply_xline(source_p, name, reason, temp_time);
|
apply_xline(source_p, name, reason, temp_time);
|
||||||
|
@ -214,7 +214,7 @@ handle_remote_xline(struct Client *source_p, int temp_time,
|
||||||
(temp_time > 0) ? SHARED_TXLINE : SHARED_PXLINE))
|
(temp_time > 0) ? SHARED_TXLINE : SHARED_PXLINE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(!valid_xline(source_p, name, reason))
|
if(!valid_xline(source_p, name, reason, temp_time))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* already xlined */
|
/* already xlined */
|
||||||
|
@ -229,13 +229,13 @@ handle_remote_xline(struct Client *source_p, int temp_time,
|
||||||
|
|
||||||
/* valid_xline()
|
/* valid_xline()
|
||||||
*
|
*
|
||||||
* inputs - client xlining, gecos, reason and whether to warn
|
* inputs - client xlining, gecos, reason and temp time
|
||||||
* outputs -
|
* outputs -
|
||||||
* side effects - checks the xline for validity, erroring if needed
|
* side effects - checks the xline for validity, erroring if needed
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
valid_xline(struct Client *source_p, const char *gecos,
|
valid_xline(struct Client *source_p, const char *gecos,
|
||||||
const char *reason)
|
const char *reason, int temp_time)
|
||||||
{
|
{
|
||||||
if(EmptyString(reason))
|
if(EmptyString(reason))
|
||||||
{
|
{
|
||||||
|
@ -245,6 +245,13 @@ valid_xline(struct Client *source_p, const char *gecos,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(temp_time == 0 && strstr(gecos, "\",") != NULL)
|
||||||
|
{
|
||||||
|
sendto_one_notice(source_p,
|
||||||
|
":Invalid character sequence '\",' in xline, please replace with '\"\\,'");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if(strchr(reason, ':') != NULL)
|
if(strchr(reason, ':') != NULL)
|
||||||
{
|
{
|
||||||
sendto_one_notice(source_p,
|
sendto_one_notice(source_p,
|
||||||
|
|
Loading…
Reference in New Issue