Repository navigation
fix(fs): carry the observed DACL in the seal read-back error and fix the test's ACE layout - #425
Merged
Merged
Conversation
…the test ACE out from size_of Full CI on Windows surfaced two defects in the write-seal work (#423): - Every facade seal failed its read-back with "the filesystem did not retain the in-place write seal" while SetNamedSecurityInfoW reported success — a silent write/read divergence that was undiagnosable from the CI log. The read-back error now embeds the DACL observed after the write, rendered as SDDL, so the next Windows run shows exactly what landed (deny ACE present = matcher bug; absent = write bug). - `seal_ace_is_recognized_and_rejected_structurally` hard-coded mask/SID offsets at [8..12]/[12..] — an 8-byte ACE_HEADER assumption. The real header is four bytes (type, flags, u16 size), so the 20-byte buffer's `ace[12..]` had only 8 bytes for the 12-byte SID and panicked before reaching a single matcher assertion. The test now derives every offset from `size_of::<ACE_HEADER>()`, exactly as the matcher does. Local-Gate: v1 tree=df7949aa6ecc4a1f927ea04c3a7f77c3c153780d secs=742 lanes=linux-minimal:run,dylint-minimal:run Ci-Attestation: {"at":1791246310,"gate":"general/all/ci-guards","host":"linux-x86_64","key":"85b6436ef9795f1fac55a0747e1b1693b2cf922fe53453bb43964db0a743797e","lane":"linux-minimal","parents":["8628bbdd2f38c8fd0bbc8582bfd33191d7e8dbfd"],"secs":254,"stamp":"954dc8138a1a33d075cd37c7953efcb8","tree":"df7949aa6ecc4a1f927ea04c3a7f77c3c153780d","v":1,"via":"run"} Ci-Attestation: {"at":1791246310,"gate":"rust/x86_64-unknown-linux-gnu/default-facade-clippy","host":"linux-x86_64","key":"85b6436ef9795f1fac55a0747e1b1693b2cf922fe53453bb43964db0a743797e","lane":"linux-minimal","parents":["8628bbdd2f38c8fd0bbc8582bfd33191d7e8dbfd"],"secs":254,"stamp":"4e9fd0842c347596e380e09bf13a190f","tree":"df7949aa6ecc4a1f927ea04c3a7f77c3c153780d","v":1,"via":"run"} Ci-Attestation: {"at":1791246310,"gate":"rust/x86_64-unknown-linux-gnu/default-facade-test","host":"linux-x86_64","key":"85b6436ef9795f1fac55a0747e1b1693b2cf922fe53453bb43964db0a743797e","lane":"linux-minimal","parents":["8628bbdd2f38c8fd0bbc8582bfd33191d7e8dbfd"],"secs":254,"stamp":"b32f87003387495d1ca18adb5b8be4c2","tree":"df7949aa6ecc4a1f927ea04c3a7f77c3c153780d","v":1,"via":"run"} Ci-Attestation: {"at":1791246310,"gate":"rust/x86_64-unknown-linux-gnu/desktop-status-test","host":"linux-x86_64","key":"85b6436ef9795f1fac55a0747e1b1693b2cf922fe53453bb43964db0a743797e","lane":"linux-minimal","parents":["8628bbdd2f38c8fd0bbc8582bfd33191d7e8dbfd"],"secs":254,"stamp":"78d30661d2242300f610cf670141c93c","tree":"df7949aa6ecc4a1f927ea04c3a7f77c3c153780d","v":1,"via":"run"} Ci-Attestation: {"at":1791246310,"gate":"rust/x86_64-unknown-linux-gnu/dylint-all-features-all-targets","host":"linux-x86_64","key":"72edde7411fc3030b3f160248b1d15c6d157f92804d3e5b5dbf0122aa05180e2","lane":"dylint-minimal","parents":["8628bbdd2f38c8fd0bbc8582bfd33191d7e8dbfd"],"secs":488,"stamp":"9622410dccb3da09202000e48d3e71e1","tree":"df7949aa6ecc4a1f927ea04c3a7f77c3c153780d","v":1,"via":"run"}
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to #423, found by the exact-SHA full CI the 0.1.29 release gate requires (#424's release run).
What
SetNamedSecurityInfoWreported success — undiagnosable from the CI log alone. The read-back error now embeds the DACL observed after the write, rendered as SDDL, so the next Windows run shows exactly what landed: deny ACE present = matcher bug; absent = write bug.seal_ace_is_recognized_and_rejected_structurallyhard-coded mask/SID offsets at[8..12]/[12..], assuming an 8-byteACE_HEADER. The real header is four bytes (type, flags,u16size), so the 20-byte buffer'sace[12..]had only 8 bytes for the 12-byte World SID and panicked before a single matcher assertion ran. Every offset now derives fromsize_of::<ACE_HEADER>(), exactly as the matcher does.Acceptance / RED → GREEN
37386794123) on the release SHA — Windows x86+arm failed with the read-back error and thecopy_from_slicepanic above.Test (x86_64-pc-windows-msvc)andTest (aarch64-pc-windows-msvc)— and if the read-back still fails, its error now carries the observed SDDL for the follow-up fix.Validation
soldr cargo check --all-featureson Linux and--target x86_64-pc-windows-msvc.soldr cargo test --features fs --test fs write_seal— 7/7 green on Linux.soldr cargo fmt --all.linux-minimal+dylint-minimal): passed, stampedLocal-Gate tree=df7949aa6ecc.