1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2024-12-23 21:34:54 +03:00

util: fix accessibility check for hook directory

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: 7fa7f7eeb6
Closes: https://gitlab.com/libvirt/libvirt/-/issues/47
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
This commit is contained in:
Ján Tomko 2020-07-07 13:47:58 +02:00
parent d38559f0b6
commit 2c846fa6bc

View File

@ -172,9 +172,9 @@ virHookCheck(int no, const char *driver)
dir_path = g_strdup_printf("%s.d", path); 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); VIR_DEBUG("Hook dir %s is not accessible", dir_path);
return 1; return 0;
} }
if ((ret = virDirOpenIfExists(&dir, dir_path)) < 0) if ((ret = virDirOpenIfExists(&dir, dir_path)) < 0)
@ -422,9 +422,6 @@ virHookCall(int driver,
dir_path = g_strdup_printf("%s.d", path); dir_path = g_strdup_printf("%s.d", path);
if (!virFileIsExecutable(dir_path))
return script_ret;
if ((ret = virDirOpenIfExists(&dir, dir_path)) < 0) if ((ret = virDirOpenIfExists(&dir, dir_path)) < 0)
return -1; return -1;