chanopt: Ensure values are 0-2

If chanopt was set to any other value it would overwrite
other values in the plugin API for channel flags.
This commit is contained in:
Patrick Griffis 2016-03-28 21:19:39 -04:00
parent edcd9af47f
commit 6cbcc73a79

View File

@ -79,11 +79,24 @@ chanopt_value (guint8 val)
return "OFF"; return "OFF";
case SET_ON: case SET_ON:
return "ON"; return "ON";
default: case SET_DEFAULT:
return "{unset}"; return "{unset}";
default:
g_assert_not_reached ();
} }
} }
static guint8
str_to_chanopt (const char *str)
{
if (!g_ascii_strcasecmp (str, "ON") || !strcmp (str, "1"))
return SET_ON;
else if (!g_ascii_strcasecmp (str, "OFF") || !strcmp (str, "0"))
return SET_OFF;
else
return SET_DEFAULT;
}
/* handle the /CHANOPT command */ /* handle the /CHANOPT command */
int int
@ -106,14 +119,7 @@ chanopt_command (session *sess, char *tbuf, char *word[], char *word_eol[])
if (word[offset][0]) if (word[offset][0])
{ {
if (!g_ascii_strcasecmp (word[offset], "ON")) newval = str_to_chanopt (word[offset]);
newval = 1;
else if (!g_ascii_strcasecmp (word[offset], "OFF"))
newval = 0;
else if (word[offset][0] == 'u')
newval = SET_DEFAULT;
else
newval = atoi (word[offset]);
} }
if (!quiet) if (!quiet)
@ -281,7 +287,7 @@ chanopt_load_all (void)
else else
{ {
if (current) if (current)
chanopt_add_opt (current, buf, atoi (eq + 2)); chanopt_add_opt (current, buf, str_to_chanopt (eq + 2));
} }
} }