Re: [PATCH v2] libnfs4acl: Check file mode before getxattr call

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



ping

On Fri, Aug 12, 2022 at 1:19 AM Kenneth D'souza <kdsouza@xxxxxxxxxx> wrote:
>
> Currently we are checking file mode after getxattr call.
> Due to this the return value would be 0, which would change the getxattr return value.
> As xattr_size will be 0, nfs4_getfacl will fail with error EINVAL.
> This patch fixes this issue by moving the file mode check before
> getxattr call.
>
> Signed-off-by: Kenneth D'souza <kdsouza@xxxxxxxxxx>
> ---
>  libnfs4acl/nfs4_getacl.c | 14 +++++++-------
>  1 file changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/libnfs4acl/nfs4_getacl.c b/libnfs4acl/nfs4_getacl.c
> index 7821da3..aace5cd 100644
> --- a/libnfs4acl/nfs4_getacl.c
> +++ b/libnfs4acl/nfs4_getacl.c
> @@ -39,6 +39,13 @@ static struct nfs4_acl *nfs4_getacl_byname(const char *path,
>                 return NULL;
>         }
>
> +       ret = stat(path, &st);
> +       if (ret == -1)
> +               goto err;
> +
> +       if (S_ISDIR(st.st_mode))
> +               iflags = NFS4_ACL_ISDIR;
> +
>         /* find necessary buffer size */
>         ret = getxattr(path, xattr_name, NULL, 0);
>         if (ret == -1)
> @@ -53,13 +60,6 @@ static struct nfs4_acl *nfs4_getacl_byname(const char *path,
>         if (ret == -1)
>                 goto err_free;
>
> -       ret = stat(path, &st);
> -       if (ret == -1)
> -               goto err_free;
> -
> -       if (S_ISDIR(st.st_mode))
> -               iflags = NFS4_ACL_ISDIR;
> -
>         acl = acl_nfs41_xattr_load(buf, ret, iflags, type);
>
>         free(buf);
> --
> 2.31.1
>




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux