From f01d8792778b637f7464533ac019e42f58adb310 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 12 May 2023 12:23:49 -0700 Subject: =?UTF-8?q?file-has-acl:=20don=E2=80=99t=20access=20freed=20storag?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix typo in previous patch, by not accessing freed storage in the unusual case where the statck buffer is not large enough. --- lib/file-has-acl.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/file-has-acl.c b/lib/file-has-acl.c index 1edcd2cbd6..38bc806dc4 100644 --- a/lib/file-has-acl.c +++ b/lib/file-has-acl.c @@ -200,11 +200,13 @@ file_has_acl (char const *name, struct stat const *sb) || (S_ISDIR (sb->st_mode) && have_xattr (XATTR_NAME_POSIX_ACL_DEFAULT, listbuf, listsize)))); + bool nfsv4_acl_but_no_posix_acl + = ret == 0 && have_xattr (XATTR_NAME_NFSV4_ACL, listbuf, listsize); free (heapbuf); /* If there is an NFSv4 ACL but no POSIX ACL, follow up with a getxattr syscall to see whether the NFSv4 ACL is nontrivial. */ - if (ret == 0 && have_xattr (XATTR_NAME_NFSV4_ACL, listbuf, listsize)) + if (nfsv4_acl_but_no_posix_acl) { ret = getxattr (name, XATTR_NAME_NFSV4_ACL, stackbuf.xattr, sizeof stackbuf.xattr); -- cgit v1.2.1