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,13 +3164,25 @@ 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)
{ {
for (int j = 0; params[i].accepted_values[j].name; j++) char *endptr;
const char *delim = ", \t";
char buf[strlen(value) + 1];
strcpy(buf, value);
char *tok = strtok_r(buf, delim, &endptr);
while (tok)
{ {
if (strcmp(params[i].accepted_values[j].name, value) == 0) valid = false;
for (int j = 0; params[i].accepted_values[j].name; j++)
{ {
valid = true; if (strcmp(params[i].accepted_values[j].name, tok) == 0)
break; {
valid = true;
break;
}
} }
tok = strtok_r(NULL, delim, &endptr);
} }
} }
break; break;