From: Stéphane Graber Date: Fri, 16 Aug 2013 12:57:44 +0000 (+0200) Subject: Replace a few more str(n)dupa by str(n)dup + free X-Git-Tag: lxc-1.0.0.alpha1~1^2~75 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d74325c436457b87b17e3ea598a9eb4ba66e0d49;p=thirdparty%2Flxc.git Replace a few more str(n)dupa by str(n)dup + free strdup and strndup still don't exist on bionic, so we need to do the alloc() call ourselves or free the memory by hand. Signed-off-by: Stéphane Graber Acked-by: Serge Hallyn --- diff --git a/src/lxc/bdev.c b/src/lxc/bdev.c index d6f117631..c96ccfe50 100644 --- a/src/lxc/bdev.c +++ b/src/lxc/bdev.c @@ -1602,7 +1602,8 @@ static int overlayfs_mount(struct bdev *bdev) // separately mount it first // mount -t overlayfs -oupperdir=${upper},lowerdir=${lower} lower dest - dup = strdupa(bdev->src); + dup = alloca(strlen(bdev->src)+1); + strcpy(dup, bdev->src); if (!(lower = index(dup, ':'))) return -22; if (!(upper = index(++lower, ':'))) @@ -1770,7 +1771,8 @@ static int overlayfs_create(struct bdev *bdev, const char *dest, const char *n, return -1; } - delta = strdupa(dest); + delta = alloca(strlen(dest)+1); + strcpy(delta, dest); strcpy(delta+len-6, "delta0"); if (mkdir_p(delta, 0755) < 0) { diff --git a/src/lxc/utils.c b/src/lxc/utils.c index 9dd742b3f..5376c8566 100644 --- a/src/lxc/utils.c +++ b/src/lxc/utils.c @@ -184,13 +184,15 @@ extern int mkdir_p(const char *dir, mode_t mode) do { dir = tmp + strspn(tmp, "/"); tmp = dir + strcspn(dir, "/"); - makeme = strndupa(orig, dir - orig); + makeme = strndup(orig, dir - orig); if (*makeme) { if (mkdir(makeme, mode) && errno != EEXIST) { SYSERROR("failed to create directory '%s'\n", makeme); + free(makeme); return -1; } } + free(makeme); } while(tmp != dir); return 0;