]> xenbits.xensource.com Git - libvirt.git/commitdiff
util: fix accessibility check for hook directory osstest/frozen/xen-4.14-testing osstest/frozen/xen-4.15-testing osstest/frozen/xen-4.16-testing
authorJán Tomko <jtomko@redhat.com>
Tue, 7 Jul 2020 11:47:58 +0000 (13:47 +0200)
committerJán Tomko <jtomko@redhat.com>
Thu, 9 Jul 2020 15:49:27 +0000 (17:49 +0200)
virFileIsAccessible does not return true on accessible
directories. Check whether it set EISDIR and only
then assume the directory is inaccessible.

Return 0 (not found) instead of 1 (found),
since the bridge driver taints the network based on
this return value, not whether the hook actually ran.

Remove the bogus check from virHookCall, since it already
checks the virHooksFound bitmap that was filled before
by virHookCheck.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Fixes: 7fa7f7eeb6e969e002845928e155914da2fc8cd0
Closes: https://gitlab.com/libvirt/libvirt/-/issues/47
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
src/util/virhook.c

index d1ac518c24c3162bc96e2b2be4f965563af4e685..119ad1aae680bfce4332a6f3f0cc7e615b7d59ec 100644 (file)
@@ -172,9 +172,9 @@ virHookCheck(int no, const char *driver)
 
     dir_path = g_strdup_printf("%s.d", path);
 
-    if (!virFileIsExecutable(dir_path)) {
+    if (!virFileIsExecutable(dir_path) && errno != EISDIR) {
         VIR_DEBUG("Hook dir %s is not accessible", dir_path);
-        return 1;
+        return 0;
     }
 
     if ((ret = virDirOpenIfExists(&dir, dir_path)) < 0)
@@ -422,9 +422,6 @@ virHookCall(int driver,
 
     dir_path = g_strdup_printf("%s.d", path);
 
-    if (!virFileIsExecutable(dir_path))
-        return script_ret;
-
     if ((ret = virDirOpenIfExists(&dir, dir_path)) < 0)
         return -1;