Unverified Commit c14c31d4 by Ruben Jenster Committed by Christian Brauner

lxccontainer: fix lxc_config_item_is_supported

Use exact match instead of longest prefix match to check whether a config item is supported. Signed-off-by: 's avatarRuben Jenster <r.jenster@drachenfels.de>
parent 55cbb1a6
...@@ -263,6 +263,18 @@ static struct lxc_config_t config_jump_table[] = { ...@@ -263,6 +263,18 @@ static struct lxc_config_t config_jump_table[] = {
static const size_t config_jump_table_size = sizeof(config_jump_table) / sizeof(struct lxc_config_t); static const size_t config_jump_table_size = sizeof(config_jump_table) / sizeof(struct lxc_config_t);
struct lxc_config_t *lxc_get_config_exact(const char *key)
{
size_t i;
for (i = 0; i < config_jump_table_size; i++)
if (!strcmp(config_jump_table[i].name, key))
return &config_jump_table[i];
return NULL;
}
struct lxc_config_t *lxc_get_config(const char *key) struct lxc_config_t *lxc_get_config(const char *key)
{ {
size_t i; size_t i;
......
...@@ -45,6 +45,9 @@ struct new_config_item { ...@@ -45,6 +45,9 @@ struct new_config_item {
}; };
/* Get the jump table entry for the given configuration key. */ /* Get the jump table entry for the given configuration key. */
__hidden extern struct lxc_config_t *lxc_get_config_exact(const char *key);
/* Get the jump table entry if entry name is a prefix of the given configuration key. */
__hidden extern struct lxc_config_t *lxc_get_config(const char *key); __hidden extern struct lxc_config_t *lxc_get_config(const char *key);
/* List all available config items. */ /* List all available config items. */
......
...@@ -5749,7 +5749,7 @@ free_ct_name: ...@@ -5749,7 +5749,7 @@ free_ct_name:
bool lxc_config_item_is_supported(const char *key) bool lxc_config_item_is_supported(const char *key)
{ {
return !!lxc_get_config(key); return !!lxc_get_config_exact(key);
} }
bool lxc_has_api_extension(const char *extension) bool lxc_has_api_extension(const char *extension)
......
...@@ -600,6 +600,11 @@ int main(int argc, char *argv[]) ...@@ -600,6 +600,11 @@ int main(int argc, char *argv[])
goto out; goto out;
} }
if (lxc_config_item_is_supported("lxc.arch.nonsense")) {
fprintf(stderr, "%d: failed to detect \"lxc.arch.nonsense\" as unsupported configuration item\n", __LINE__);
goto out;
}
if (c->set_config_item(c, "lxc.notaconfigkey", "invalid")) { if (c->set_config_item(c, "lxc.notaconfigkey", "invalid")) {
fprintf(stderr, "%d: Managed to set \"lxc.notaconfigkey\"\n", __LINE__); fprintf(stderr, "%d: Managed to set \"lxc.notaconfigkey\"\n", __LINE__);
goto out; goto out;
......
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