From 77cd862fb5e1d61922ab945f52ad94f7753704a5 Mon Sep 17 00:00:00 2001 From: Christian Ehrhardt Date: Mon, 19 Mar 2018 11:10:29 +0100 Subject: [PATCH] virt-aa-helper: resolve file symlinks In a recent change b932ed69: "virt-aa-helper: resolve yet to be created paths" several cases with symlinks in paths were fixed, but it regressed cases where the file being last element of the path was the actual link. In the case of the last element being the symlink realpath can (and shall) be called on the full path that was passed. Examples would be zfs/lvm block devices like: With the target being: /dev/mapper/testlvm-testvol1 -> ../dm-0 That currently is rendered as "/dev/mapper/testlvm-testvol1" rwk, but instead should be (and is with the fix): "/dev/dm-0" rwk, Fixes: b932ed69: "virt-aa-helper: resolve yet to be created paths" Fixes: https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1756394 Signed-off-by: Christian Ehrhardt --- src/security/virt-aa-helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c index 992bd44a03..456cfce5e8 100644 --- a/src/security/virt-aa-helper.c +++ b/src/security/virt-aa-helper.c @@ -777,7 +777,7 @@ vah_add_path(virBufferPtr buf, const char *path, const char *perms, bool recursi * 3. re-combine the realpath with the remaining suffix * Note: A totally non existent path is used as-is */ - if ((pathdir = mdir_name(path)) == NULL) + if (VIR_STRDUP_QUIET(pathdir, path) < 0) goto cleanup; while (!virFileExists(pathdir)) { if ((pathtmp = mdir_name(pathdir)) == NULL) -- GitLab