diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2022-12-27 20:00:58 -0800 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2022-12-27 20:01:33 -0800 |
commit | d65e5a8ba77595a598c9ddb8dfa09c4aea732659 (patch) | |
tree | b82ff3d0fec26e92dd4b9d39f766d8ac95eb2828 | |
parent | 6f8db599ab511c957f87e44dbaf5abe4b55a79bc (diff) | |
download | gnulib-d65e5a8ba77595a598c9ddb8dfa09c4aea732659.tar.gz |
file-has-acl: fix recently-introduced NFSv4 bug
* lib/file-has-acl.c (acl_nfs4_nontrivial): Fix off-by-one
error when rounding WHOLEN up to next multiple of 4.
Pacify GCC 12.2.1 -Wcast-align.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | lib/file-has-acl.c | 9 |
2 files changed, 10 insertions, 4 deletions
@@ -1,5 +1,10 @@ 2022-12-27 Paul Eggert <eggert@cs.ucla.edu> + file-has-acl: fix recently-introduced NFSv4 bug + * lib/file-has-acl.c (acl_nfs4_nontrivial): Fix off-by-one + error when rounding WHOLEN up to next multiple of 4. + Pacify GCC 12.2.1 -Wcast-align. + Add --pull, --gen options to build-aux/bootstrap This supports a single bootstrap script with --pull and --gen options, as an alternative to separate autogen.sh and autopull.sh diff --git a/lib/file-has-acl.c b/lib/file-has-acl.c index 676523ba82..7876edc4f0 100644 --- a/lib/file-has-acl.c +++ b/lib/file-has-acl.c @@ -81,9 +81,10 @@ acl_nfs4_nontrivial (uint32_t *xattr, ssize_t nbytes) uint32_t flag = ntohl (xattr[1]); uint32_t wholen = ntohl (xattr[3]); xattr += 4; - int64_t wholen4 = wholen; - wholen4 = ((wholen4 + (BYTES_PER_NETWORK_UINT)) - & ~ (BYTES_PER_NETWORK_UINT - 1)); + int whowords = (wholen / BYTES_PER_NETWORK_UINT + + (wholen % BYTES_PER_NETWORK_UINT != 0)); + int64_t wholen4 = whowords; + wholen4 *= BYTES_PER_NETWORK_UINT; /* Trivial ACLs have only ACE4_ACCESS_ALLOWED_ACE_TYPE or ACE4_ACCESS_DENIED_ACE_TYPE. */ @@ -115,7 +116,7 @@ acl_nfs4_nontrivial (uint32_t *xattr, ssize_t nbytes) return 1; ace_found |= ace_found_bit; - xattr = (uint32_t *) ((char *) xattr + wholen4); + xattr += whowords; } return 0; |