Commit 6c68b9dc by Serge Hallyn Committed by Stéphane Graber

fix lxc.mount.auto clearing

the way config_mount was structured, sending 'lxc.mount.auto = ' ended up actually clearing all lxc.mount.entrys. Fix that by moving the check for an empty value to after the subkey checks. Then, actually do the clearing of auto_mounts in config_mount_auto. The 'strlen(subkey)' check being removed was bogus - the subkey either known to be 'lxc.mount.entry', else subkey would have been NULL (and forced a return in the block above). This would have been clearer if the config_mount() and helper fns were structured like the rest of confile.c. It's tempting to switch it over, but there are subtleties in there so it's not something to do without a lot of thought and testing. Signed-off-by: 's avatarSerge Hallyn <serge.hallyn@ubuntu.com>
parent 5ecedb89
......@@ -1353,6 +1353,8 @@ out:
static int config_fstab(const char *key, const char *value,
struct lxc_conf *lxc_conf)
{
if (!value || strlen(value) == 0)
return -1;
return config_path_item(&lxc_conf->fstab, value);
}
......@@ -1384,8 +1386,10 @@ static int config_mount_auto(const char *key, const char *value,
int i;
int ret = -1;
if (!strlen(value))
return -1;
if (!value || strlen(value) == 0) {
lxc_conf->auto_mounts = 0;
return 0;
}
autos = strdup(value);
if (!autos) {
......@@ -1419,6 +1423,12 @@ static int config_mount_auto(const char *key, const char *value,
return ret;
}
/*
* TODO
* This fn is handling lxc.mount, lxc.mount.entry, and lxc.mount.auto.
* It should probably be split into 3 separate functions indexed by
* the config[] entries at top.
*/
static int config_mount(const char *key, const char *value,
struct lxc_conf *lxc_conf)
{
......@@ -1429,9 +1439,6 @@ static int config_mount(const char *key, const char *value,
char *mntelem;
struct lxc_list *mntlist;
if (!value || strlen(value) == 0)
return lxc_clear_mount_entries(lxc_conf);
subkey = strstr(key, token);
if (!subkey) {
......@@ -1449,8 +1456,9 @@ static int config_mount(const char *key, const char *value,
return config_mount_auto(key, value, lxc_conf);
}
if (!strlen(subkey))
return -1;
/* At this point we definately have key = lxc.mount.entry */
if (!value || strlen(value) == 0)
return lxc_clear_mount_entries(lxc_conf);
mntlist = malloc(sizeof(*mntlist));
if (!mntlist)
......
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