mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-05 04:33:03 +00:00
aufs: support multiple lower layers
Do it in a safe way by using strstr() to check for the substring ":/" should ':' be part of a pathname. Signed-off-by: Christian Brauner <christian.brauner@mailbox.org> Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
This commit is contained in:
parent
9208af160e
commit
410d0f6e5c
@ -234,7 +234,7 @@ int aufs_detect(const char *path)
|
||||
|
||||
int aufs_mount(struct bdev *bdev)
|
||||
{
|
||||
char *options, *dup, *lower, *upper;
|
||||
char *tmp, *options, *dup, *lower, *upper;
|
||||
int len;
|
||||
unsigned long mntflags;
|
||||
char *mntdata;
|
||||
@ -250,9 +250,15 @@ int aufs_mount(struct bdev *bdev)
|
||||
// mount -t aufs -obr=${upper}=rw:${lower}=ro lower dest
|
||||
dup = alloca(strlen(bdev->src)+1);
|
||||
strcpy(dup, bdev->src);
|
||||
if (!(lower = strchr(dup, ':')))
|
||||
return -22;
|
||||
if (!(upper = strchr(++lower, ':')))
|
||||
/* support multiple lower layers */
|
||||
if (!(lower = strstr(dup, ":/")))
|
||||
return -22;
|
||||
lower++;
|
||||
upper = lower;
|
||||
while ((tmp = strstr(++upper, ":/"))) {
|
||||
upper = tmp;
|
||||
}
|
||||
if (--upper == lower)
|
||||
return -22;
|
||||
*upper = '\0';
|
||||
upper++;
|
||||
|
Loading…
Reference in New Issue
Block a user