parm_type,
};
-static int add_param(const char *name, size_t namelen, enum parm_info parm_info,
- const char *value, struct param *params, unsigned int params_count)
+static void add_param(const char *name, int namelen, enum parm_info parm_info,
+ const char *value, struct param *params, unsigned int params_count)
{
- if (namelen > INT_MAX)
- return -EINVAL;
-
/* We are guaranteed to have a match, or at least one empty entry */
for (unsigned int i = 0; i < params_count; i++) {
struct param *it = ¶ms[i];
- if (it->name != NULL && (it->namelen != (int)namelen ||
- memcmp(it->name, name, namelen) != 0)) {
+ if (it->name != NULL &&
+ (it->namelen != namelen || memcmp(it->name, name, namelen) != 0)) {
continue;
}
}
break;
}
-
- return 0;
}
-static int process_parm(enum parm_info parm_info, const char *value, struct param *params,
- unsigned int params_count)
+static void process_parm(enum parm_info parm_info, const char *value,
+ struct param *params, unsigned int params_count)
{
const char *name;
- size_t namelen;
+ int namelen;
const char *colon = strchr(value, ':');
- int ret;
if (colon == NULL) {
ERR("Missing ':' in value \"%s\"\n", value);
- return 0;
+ return;
}
if (colon == value) {
ERR("Missing param name in value \"%s\"\n", value);
- return 0;
+ return;
}
name = value;
- namelen = colon - value;
- ret = add_param(name, namelen, parm_info, colon + 1, params, params_count);
- if (ret < 0) {
- ERR("Unable to add parameter: %s\n", strerror(-ret));
- return -ENOMEM;
- }
-
- return 0;
+ namelen = (int)(colon - value);
+ add_param(name, namelen, parm_info, colon + 1, params, params_count);
}
static void print_line(const char *key, const char *value)
continue;
}
- err = process_parm(parm_info, value, params, params_count);
- if (err < 0)
- goto end;
+ if (strlen(value) > INT_MAX) {
+ ERR("%s's value is longer than INT_MAX\n",
+ parm_info == parm_desc ? "parm" : "parmtype");
+ continue;
+ }
+ process_parm(parm_info, value, params, params_count);
}
for (unsigned int i = 0; i < params_count; i++) {