From f85b16a104fa58ba2cbc285d632223f8b0a9fe49 Mon Sep 17 00:00:00 2001 From: Christian Brauner Date: Mon, 26 Sep 2016 22:05:54 +0200 Subject: [PATCH] utils: lxc_deslashify() free memory Make sure we always free any memory that was allocated by the call to lxc_normalize_path(). Signed-off-by: Christian Brauner --- src/lxc/utils.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/lxc/utils.c b/src/lxc/utils.c index ebf3ad981..2029e3328 100644 --- a/src/lxc/utils.c +++ b/src/lxc/utils.c @@ -718,6 +718,7 @@ char **lxc_normalize_path(const char *path) bool lxc_deslashify(char **path) { + bool ret = false; char *p; char **parts = NULL; size_t n, len; @@ -729,28 +730,33 @@ bool lxc_deslashify(char **path) /* We'll end up here if path == "///" or path == "". */ if (!*parts) { len = strlen(*path); - if (!len) - return true; + if (!len) { + ret = true; + goto out; + } n = strcspn(*path, "/"); if (n == len) { p = strdup("/"); if (!p) - return false; + goto out; free(*path); *path = p; - return true; + ret = true; + goto out; } } p = lxc_string_join("/", (const char **)parts, **path == '/'); - lxc_free_array((void **)parts, free); if (!p) - return false; + goto out; free(*path); *path = p; + ret = true; - return true; +out: + lxc_free_array((void **)parts, free); + return ret; } char *lxc_append_paths(const char *first, const char *second)