Signed-off-by: Chris Lalancette <clalance(a)redhat.com>
---
src/security/security_apparmor.c | 17 +++++++++--------
1 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/src/security/security_apparmor.c b/src/security/security_apparmor.c
index f288645..0857d58 100644
--- a/src/security/security_apparmor.c
+++ b/src/security/security_apparmor.c
@@ -258,22 +258,23 @@ get_profile_name(virConnectPtr conn, virDomainObjPtr vm)
static int
use_apparmor(void)
{
- char libvirt_daemon[PATH_MAX];
int rc = -1;
- ssize_t len = 0;
+ char *libvirt_daemon = NULL;
- if ((len = readlink("/proc/self/exe", libvirt_daemon,
- PATH_MAX - 1)) < 0) {
+ if (virFileResolveLink("/proc/self/exe", &libvirt_daemon) < 0) {
virSecurityReportError(NULL, VIR_ERR_INTERNAL_ERROR,
"%s", _("could not find libvirtd"));
- return rc;
+ return -1;
}
- libvirt_daemon[len] = '\0';
if (access(APPARMOR_PROFILES_PATH, R_OK) != 0)
- return rc;
+ goto cleanup;
- return profile_status(libvirt_daemon, 1);
+ rc = profile_status(libvirt_daemon, 1);
+
+cleanup:
+ VIR_FREE(libvirt_daemon);
+ return rc;
}
/* Called on libvirtd startup to see if AppArmor is available */
--
1.6.6