50 lines
1.9 KiB
Markdown
50 lines
1.9 KiB
Markdown
# Pre12 Batch 03: POSIX ACL mode helper
|
|
|
|
## Change
|
|
|
|
- In `src/xattr.c`, `erofs_acl_from_mode` now obtains the owner, group, and
|
|
other permissions with `acl_posix1e_mode_to_perm`.
|
|
- The helper tags are `ACL_USER_OBJ`, `ACL_GROUP_OBJ`, and `ACL_OTHER`, matching
|
|
the adjacent `ae_tag` assignments.
|
|
- No other function lines, ACL entry ordering, `acl_cnt`, IDs, default ACL
|
|
handling, fallback behavior, flags, errno behavior, or control flow changed.
|
|
|
|
## Helper confirmation
|
|
|
|
- The local FreeBSD header `sys/sys/acl.h` declares
|
|
`acl_posix1e_mode_to_perm(acl_tag_t tag, mode_t mode)` for kernel consumers.
|
|
- The local FreeBSD implementation in `sys/kern/subr_acl_posix1e.c` maps
|
|
`ACL_USER_OBJ` from `S_IRWXU`, `ACL_GROUP_OBJ` from `S_IRWXG`, and
|
|
`ACL_OTHER` from `S_IRWXO`, returning the corresponding POSIX ACL read,
|
|
write, and execute permission bits.
|
|
- `src/xattr.c` already includes `<sys/acl.h>`; no include change was needed.
|
|
|
|
## Exhaustive equivalence
|
|
|
|
A temporary standalone C program reproduced the local FreeBSD helper logic and
|
|
compared it with the three replaced expressions for every permission mode from
|
|
`0000` through `0777`:
|
|
|
|
```text
|
|
equivalent=1536/1536 modes=512 tags=3 mismatches=0
|
|
temporary_cleanup=ok
|
|
```
|
|
|
|
This covers 512 modes for each of the three tags. The temporary source and
|
|
executable were deleted and are not part of the repository.
|
|
|
|
## Static validation
|
|
|
|
- The `erofs_acl_from_mode` function is line-for-line unchanged except for the
|
|
three `ae_perm` expressions.
|
|
- The source diff changes only those three expressions; this document is the
|
|
only added file.
|
|
- `git diff --check` and `git diff --cached --check` completed without errors.
|
|
- Before commit, both unstaged status and staged status contained only
|
|
`src/xattr.c` and `docs/pre12-batch-03.md` under `repo-pre-12`.
|
|
|
|
## Tests not run
|
|
|
|
Per the Batch 03 execution constraints, no project build, QEMU run, smoke test,
|
|
or feature test was run.
|