diff --git a/lib/parameter.c b/lib/parameter.c index 868b810..fd05b49 100644 --- a/lib/parameter.c +++ b/lib/parameter.c @@ -389,7 +389,7 @@ struct param_enum { struct param_d param; - int *value; + unsigned int *value; const char * const *names; int num_names; int (*set)(struct param_d *p, void *priv); @@ -441,7 +441,11 @@ } free(p->value); - p->value = strdup(pe->names[*pe->value]); + + if (*pe->value >= pe->num_names) + p->value = asprintf("invalid:%d", *pe->value); + else + p->value = strdup(pe->names[*pe->value]); return p->value; }