parent 54b0023f
...@@ -1836,35 +1836,36 @@ static int set_config_sysctl(const char *key, const char *value, ...@@ -1836,35 +1836,36 @@ static int set_config_sysctl(const char *key, const char *value,
return -1; return -1;
key += STRLITERALLEN("lxc.sysctl."); key += STRLITERALLEN("lxc.sysctl.");
if (is_empty_string(key))
return ret_errno(-EINVAL);
/* find existing list element */ /* find existing list element */
lxc_list_for_each(iter, &lxc_conf->sysctls) { lxc_list_for_each(iter, &lxc_conf->sysctls) {
__do_free char *replace_value = NULL; __do_free char *replace_value = NULL;
struct lxc_sysctl *cur = iter->elem;
sysctl_elem = iter->elem; if (!strequal(key, cur->key))
if (!strequal(key, sysctl_elem->key))
continue; continue;
replace_value = strdup(value); replace_value = strdup(value);
if (!replace_value) if (!replace_value)
return ret_errno(EINVAL); return ret_errno(EINVAL);
free(sysctl_elem->value); free(cur->value);
sysctl_elem->value = move_ptr(replace_value); cur->value = move_ptr(replace_value);
return 0; return 0;
} }
/* allocate list element */ /* allocate list element */
sysctl_list = malloc(sizeof(*sysctl_list)); sysctl_list = zalloc(sizeof(*sysctl_list));
if (!sysctl_list) if (!sysctl_list)
return ret_errno(ENOMEM); return ret_errno(ENOMEM);
lxc_list_init(sysctl_list);
sysctl_elem = malloc(sizeof(*sysctl_elem)); sysctl_elem = zalloc(sizeof(*sysctl_elem));
if (!sysctl_elem) if (!sysctl_elem)
return ret_errno(ENOMEM); return ret_errno(ENOMEM);
memset(sysctl_elem, 0, sizeof(*sysctl_elem));
sysctl_elem->key = strdup(key); sysctl_elem->key = strdup(key);
if (!sysctl_elem->key) if (!sysctl_elem->key)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment