core: Fix use after free case in load_from_path()

ensure that mfree() on filename is called after the logging function
which uses the string pointed by filename

Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Khem Raj
2018-12-16 22:02:00 -08:00
parent bfc4183ea9
commit baa162cecd
+1 -1
View File
@@ -4531,7 +4531,6 @@ static int load_from_path(Unit *u, const char *path) {
r = open_follow(&filename, &f, symlink_names, &id);
if (r >= 0)
break;
filename = mfree(filename);
/* ENOENT means that the file is missing or is a dangling symlink.
* ENOTDIR means that one of paths we expect to be is a directory
@@ -4543,6 +4542,7 @@ static int load_from_path(Unit *u, const char *path) {
else if (!IN_SET(r, -ENOENT, -ENOTDIR))
return r;
filename = mfree(filename);
/* Empty the symlink names for the next run */
set_clear_free(symlink_names);
}