From d74325c436457b87b17e3ea598a9eb4ba66e0d49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Fri, 16 Aug 2013 14:57:44 +0200 Subject: [PATCH] Replace a few more str(n)dupa by str(n)dup + free MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- src/lxc/bdev.c | 6 ++++-- src/lxc/utils.c | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) 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;