[libvirt PATCH] util: fix accessibility check for hook directory

Daniel Henrique Barboza danielhb413 at gmail.com
Tue Jul 7 12:39:13 UTC 2020



On 7/7/20 9:14 AM, Ján Tomko wrote:
> 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 at redhat.com>
> Fixes: 7fa7f7eeb6e969e002845928e155914da2fc8cd0
> Closes: https://gitlab.com/libvirt/libvirt/-/issues/47
> ---

Reviewed-by: Daniel Henrique Barboza <danielhb413 at gmail.com>

>   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;
>   
> 




More information about the libvir-list mailing list