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 >