Repository navigation
fix: restrict new WAV and received-frame file permissions - #15
Merged
Elodie Mirza (elodiejmirza) merged 3 commits intoNov 4, 2026
Merged
Conversation
Signed-off-by: Elodie Mirza <elodiejmirza@gmail.com>
Elodie Mirza (elodiejmirza)
marked this pull request as ready for review
November 4, 2026 12:46
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
🟡 Changes recommended
Critical privacy gaps in output creation can expose data through inherited macOS ACLs, NTFS alternate streams, and retries that reuse permissive files left behind after failed setup.
3 open issues
What changed in this PR
This PR introduces a shared output helper to restrict permissions on new WAV and received-frame files while preserving existing WAV permissions and platform-specific byte handling.
Changes:
- Adds platform-specific permission enforcement and file-object validation before truncation.
- Routes WAV and received-frame output through the helper, with exclusive frame-file creation and write-error reporting.
- Adds focused regression tests and Windows library linkage.
| File | Description |
|---|---|
test/private_output_test.c |
Tests permissions, byte handling, collisions, and invalid file objects. |
test/CMakeLists.txt |
Registers the private-output test and Windows linkage. |
src/private_output.h |
Defines output modes, creation policies, and the helper contract. |
src/private_output.c |
Implements platform-specific private output creation and validation. |
src/kissutil.c |
Uses exclusive frame-file creation and reports write failures. |
src/gen_packets.c |
Uses the helper for binary WAV output. |
src/CMakeLists.txt |
Builds the helper into both utilities and links Windows security APIs. |
Review effort: Balanced
Elodie Mirza (elodiejmirza)
marked this pull request as draft
November 4, 2026 12:55
Signed-off-by: Elodie Mirza <elodiejmirza@gmail.com>
Signed-off-by: Elodie Mirza <elodiejmirza@gmail.com>
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.

BLUF
5e4550b; all final-head and integrated native/CodeQL gates passed. Previous heads remain historical evidence.::$DATA; ordinary drive-letter paths remain supported.Verification and security review evidence
3956274because rejected permissive creation leaves the final destination. The correction passes absence-after-failure, private retry and concurrentKEEPpreservation.e1d38421e75ba0bb44547d731d737040cbed08d6e18b4f7f26b70922fb81e5c1), private0600; loopback KISS receive produced a private complete synthetic frame. These observations are historical, not substitutes for final-head validation.Compatibility and residual limits
Lessons Learned
Integrated verification
c1aee849c05ebb8a751581bdde8a6e7f5c8a3138, containing all three verified signed/DCO commits. All review findings are fixed/replied/resolved; no bypass or settings change.fixed_at=2026-11-04T13:49:02Z. Current-source C++ results reduced four→two. DSP#1/config-path#15 remain needs_review; Feature Request: control beacon transmission using an external command wb2osz/direwolf#179 stays open. Governance#112 separately owns missing live master protection.