From: Chris Lalancette Date: Wed, 20 Jan 2010 21:12:43 +0000 (-0500) Subject: Use virFileResolveLink instead of readlink in AppArmor X-Git-Tag: v0.7.6~71 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b195f20f181ee31012003f4fbb6c235663a92d8a;p=thirdparty%2Flibvirt.git Use virFileResolveLink instead of readlink in AppArmor Signed-off-by: Chris Lalancette --- diff --git a/src/security/security_apparmor.c b/src/security/security_apparmor.c index aaf94edfe9..138751c3ad 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; } - libvirt_daemon[len] = '\0'; if (access(APPARMOR_PROFILES_PATH, R_OK) != 0) - return rc; + goto cleanup; + + rc = profile_status(libvirt_daemon, 1); - return profile_status(libvirt_daemon, 1); +cleanup: + VIR_FREE(libvirt_daemon); + return rc; } /* Called on libvirtd startup to see if AppArmor is available */