From c84a94883161073239c35d181e25823ff0454f68 Mon Sep 17 00:00:00 2001 From: Zbigniew Jędrzejewski-Szmek Date: Sun, 24 Mar 2013 19:09:19 -0400 Subject: Add _cleanup_globfree_ Fixes a memleak in error path in exec_context_load_environment. --- src/tmpfiles/tmpfiles.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src/tmpfiles/tmpfiles.c') diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index 51827f01af..5d32bd1975 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -601,12 +601,12 @@ static int recursive_relabel(Item *i, const char *path) { static int glob_item(Item *i, int (*action)(Item *, const char *)) { int r = 0, k; - glob_t g = {}; + glob_t _cleanup_globfree_ g = {}; char **fn; errno = 0; - if ((k = glob(i->path, GLOB_NOSORT|GLOB_BRACE, NULL, &g)) != 0) { - + k = glob(i->path, GLOB_NOSORT|GLOB_BRACE, NULL, &g); + if (k != 0) if (k != GLOB_NOMATCH) { if (errno > 0) errno = EIO; @@ -614,13 +614,13 @@ static int glob_item(Item *i, int (*action)(Item *, const char *)) { log_error("glob(%s) failed: %m", i->path); return -errno; } - } - STRV_FOREACH(fn, g.gl_pathv) - if ((k = action(i, *fn)) < 0) + STRV_FOREACH(fn, g.gl_pathv) { + k = action(i, *fn); + if (k < 0) r = k; + } - globfree(&g); return r; } -- cgit v1.2.3-54-g00ecf