Fix enum parameter checks

The enums weren't properly parsed when they were checked.
This commit is contained in:
Markus Mäkelä
2017-01-09 14:43:28 +02:00
parent 9803dc3f8c
commit da5d53bbe0

View File

@ -3164,14 +3164,26 @@ bool config_param_is_valid(const MXS_MODULE_PARAM *params, const char *key,
case MXS_MODULE_PARAM_ENUM: case MXS_MODULE_PARAM_ENUM:
if (params[i].accepted_values) if (params[i].accepted_values)
{ {
char *endptr;
const char *delim = ", \t";
char buf[strlen(value) + 1];
strcpy(buf, value);
char *tok = strtok_r(buf, delim, &endptr);
while (tok)
{
valid = false;
for (int j = 0; params[i].accepted_values[j].name; j++) for (int j = 0; params[i].accepted_values[j].name; j++)
{ {
if (strcmp(params[i].accepted_values[j].name, value) == 0) if (strcmp(params[i].accepted_values[j].name, tok) == 0)
{ {
valid = true; valid = true;
break; break;
} }
} }
tok = strtok_r(NULL, delim, &endptr);
}
} }
break; break;