From 2c846fa6bcc11929c9fb857a22430fb9945654ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A1n=20Tomko?= Date: Tue, 7 Jul 2020 13:47:58 +0200 Subject: [PATCH] util: fix accessibility check for hook directory MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Fixes: 7fa7f7eeb6e969e002845928e155914da2fc8cd0 Closes: https://gitlab.com/libvirt/libvirt/-/issues/47 Reviewed-by: Daniel Henrique Barboza --- src/util/virhook.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/util/virhook.c b/src/util/virhook.c index d1ac518c24..119ad1aae6 100644 --- a/src/util/virhook.c +++ b/src/util/virhook.c @@ -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;