]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Use virFileResolveLink instead of readlink in AppArmor
authorChris Lalancette <clalance@redhat.com>
Wed, 20 Jan 2010 21:12:43 +0000 (16:12 -0500)
committerChris Lalancette <clalance@redhat.com>
Fri, 22 Jan 2010 14:38:22 +0000 (09:38 -0500)
Signed-off-by: Chris Lalancette <clalance@redhat.com>
src/security/security_apparmor.c

index aaf94edfe9d2ba30c2eba76e0f3fa921292e539c..138751c3ad2cbb01fb49daf5fc3774b607f60f49 100644 (file)
@@ -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 */