[libvirt] [PATCH] Use virFileResolveLink instead of readlink in AppArmor

Chris Lalancette clalance at redhat.com
Thu Jan 21 16:33:19 UTC 2010


Signed-off-by: Chris Lalancette <clalance at 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




More information about the libvir-list mailing list