Repository navigation
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MarcZX10
left a comment
There was a problem hiding this comment.
Reviewed — looks good
The exact-head stpcpy test checks copied bytes, the returned terminator, chaining from that pointer, and writes up to a protected page; no blocking source issue was found.
What I ran
Reviewed PR head a3001bab8d1aba5f601a300aa231104bf773f5f0 against current main 58d5af7daa8087d2ffbdb50ae6e0db3cb6a88e48; the merge preview was clean (tree c0c90fc4f6ad8f824b48c47dcb336e048a62bcf5). Environment: Debian 12 x86-64, Python 3.11.2, Git 2.39.5, GCC 12.2.0. I did not build or run C++ tests locally. Test/build results below are author-reported for an integration containing this exact topic head. Hosted Linux was skipped; the remaining build and policy jobs were pending at final refresh.
git diff --check 58d5af7daa8087d2ffbdb50ae6e0db3cb6a88e48...a3001bab8d1aba5f601a300aa231104bf773f5f0
python3 tools/check_conventions.py --base 58d5af7daa8087d2ffbdb50ae6e0db3cb6a88e48 --head a3001bab8d1aba5f601a300aa231104bf773f5f0 --title 'test(libc): guard stpcpy writes and returned terminators' --body /tmp/pr-13317-body.md
python3 tools/pr_test_quality.py --root /tmp/anyps5-review-13317 --json core/libs/prx/libc/CMakeLists.txt core/libs/tests/GuestStpcpyExtent.cpp
git merge-tree --write-tree 58d5af7daa8087d2ffbdb50ae6e0db3cb6a88e48 refs/review/pr-13317
gh pr checks 13317 -R boykopovar/AnyPS5Results
| Check | Result |
|---|---|
| Diff whitespace | Passed; no output from git diff --check. |
| Conventions and PR template | Passed against current main. |
| Current-main merge preview | Passed; clean tree c0c90fc4f6ad8f824b48c47dcb336e048a62bcf5. |
| Test registration/source review | Registered as guest_stpcpy_extent; cases cover lengths 0–192, exact copied bytes, source and prefix preservation, return pointer and terminator, and an empty follow-up copy at the returned pointer. |
| Test-quality heuristic | Flagged possible missing registration; manual CMake inspection confirmed registration through ${LIBS_INCLUDE_DIR}/tests/GuestStpcpyExtent.cpp. |
| Author-reported tests | The author reports this test passed within a 20/20 filtered CTest run on Linux and Windows and an intentional production defect was rejected by an exact-head source-unit control. The author also reports a full Linux build and affected-target Windows build. I did not independently run these. |
| Hosted CI | Eligibility passed; Linux job skipped; all other listed policy/build jobs were pending at final refresh. |
| Local build/C++ execution | Not run locally. |
Unedited local command output
git diff --check produced no output.
Conventions:
All conventions checks passed.
Test-quality heuristic:
{
"findings": [
{
"path": "core/libs/tests/GuestStpcpyExtent.cpp",
"line": 1,
"kind": "possible-unregistered-cpp-test",
"message": "Changed C++ test source path was not found literally in CMake files; inspect registration, generated source lists, and workflow coverage."
}
],
"negative_control_candidates": [],
"limits": [
"Heuristics can miss weak assertions and can flag valid tests; inspect every finding.",
"A test that passes against base is not by itself proof that the PR test is inadequate.",
"Negative controls are only candidates until the test actually runs against base and fails by assertion rather than import/setup error."
]
}Merge preview:
c0c90fc4f6ad8f824b48c47dcb336e048a62bcf5
Hosted checks:
linux skipping 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056284232/job/124070106451
register-context (macos-15-intel, Debug) pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056284232/job/124070104473
labels pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056284210/job/124064523722
library-portability pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056284315/job/124064521293
intake pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056284238/job/124064524197
eligibility pass 10s https://github.com/boykopovar/AnyPS5/actions/runs/41056284232/job/124064521843
conventions pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056284320/job/124064523641
register-context (macos-15-intel, Release) pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056284232/job/124070104582
register-context (ubuntu-latest, Debug) pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056284232/job/124070104531
register-context (ubuntu-latest, Release) pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056284232/job/124070104619
relinker (macos-latest, clang++) pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056284232/job/124070104607
relinker (macos-latest, clang++, x86_64) pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056284232/job/124070104478
relinker (ubuntu-latest, g++) pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056284232/job/124070104625
relinker (windows-latest, g++) pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056284232/job/124070104615
relinker-asan pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056284232/job/124070104788
report pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056284316/job/124064521290
windows pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056284232/job/124070104368
write-watch (macos-15) pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056284232/job/124070104497
write-watch (macos-15-intel) pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056284232/job/124070104402
Negative control
| Assertion | Mutation reported by author | Result |
|---|---|---|
Test rejects an incorrect stpcpy implementation |
Author reports an intentional production-function mutation in the exact-head source-unit control | Author reports the fixture rejected it; I did not independently run the control. |
Findings
Blocking
None found in the reviewed source.
Non-blocking
The C++ test, source-unit mutation control, and author-reported product builds were not independently run here. Hosted jobs were still pending or skipped as listed above.
Sources
- Registered
guest_stpcpy_extenttarget. - Protected-boundary cases and assertions.
- Production
stpcpy_nid_postfiximplementation.
Not verified
No local build/C++ execution, independent Linux/Windows execution, macOS or WASM runtime, title, or console test. Hosted Linux skipped and hosted Windows/build matrix remained pending.
|
Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.
|
|
Investigated the failed macOS checks on unchanged head Both logs stop in The existing fix is #13220 at The independent functional test scope is unchanged; the remaining macOS CI blocker is the shared registration fix. AI-assisted: yes. |
|
Integrated the existing shared CI fix at new head #13220's original commit Fresh local verification:
Hosted-check snapshot at 2026-10-30T17:36:17+00:00 (UTC): 2 pending. Current-head checks. Earlier red checks belong to heads without the prerequisite; new-head CI remains pending until it completes. Please re-check this integrated head. AI-assisted: yes. |
What
Adds stpcpy tests through 192 bytes with high bytes, a protected boundary immediately after each terminator, exact copied bytes, source/prefix preservation and the returned terminator pointer. An empty follow-up copy verifies chaining at that pointer.
Integrate the existing #13220 fix at
e9f09f54fabb6408d3e2711b8df10c10112ab00eand current recorded main. The failed macOS write-watch jobs stopped in CMake configuration because execute-fault and read-fault were each registered twice. This head includes the original prerequisite commit, removing the duplicate block while retaining all 18 distinct tests. No parallel fix is introduced, no test assertion is weakened, and no timeout is changed.This PR's fixture is byte-identical to the previous published head
a3001bab8d1aba5f601a300aa231104bf773f5f0. The extra topic-relative CI change is the existing prerequisite's five-line registration deletion. Proposed landing order is #13220 first, then this independent topic. The submitted head already includes the fix, so its new CI can test it while the prerequisite PR remains open.Original topic rationale and earlier overlap evidence (historical snapshots)
Adds stpcpy tests through 192 bytes with high bytes, a protected boundary immediately after each terminator, exact copied bytes, source/prefix preservation and the returned terminator pointer. An empty follow-up copy verifies chaining at that pointer.
Implementation basis: Public string/memory contract: https://github.com/freebsd/freebsd-src/blob/833d39bd2e38421a14ea489a956261a0fa993fbc/lib/libc/string/strcpy.3. The fixture calls the actual production function(s) through the existing public Api.hpp and constructs expected results separately from immutable input snapshots, membership tables or standard C++ range algorithms. No production function body or firmware object is copied into the fixture.
Known limits: Valid terminated strings and nonoverlapping, sufficiently large output only. The test does not define overflow recovery or overlap semantics.
Source/schema: core/libs/prx/libc/src/StringExtensions.cpp core/libs/prx/libc/include/Api.hpp
Exact topic head
a3001bab8d1aba5f601a300aa231104bf773f5f0is one independent commit on main51c31ea17e9f66cb36fe9655ec31c81610bfcfc9. The current-main repository overlap checker against51c31ea17e9f66cb36fe9655ec31c81610bfcfc9reported no confirmed overlap. It could not finish comparisons for these older PRs already conflicting with main: #5021, #6085, #7081, #7447, #7715, #8150, #8965, #11628, #11661, #11689, #11698, #11947, #12688, #12700, #12965. Their shared-file diffs were reviewed separately. 13 scoped file changes projected onto main and then combined with this topic without a new conflict; 2 peer file changes already conflict with main and are not claimed automatically mergeable. They do not provide this command or test matrix. Registration uses a separate target/name and there is no landing-order dependency. Changes to shared registration before landing need a refreshed merge/test check. Functional overlap remains independent; the shared macOS CI prerequisite is #13220. The twenty current topic heads are also merged into tested integrationcedab5157a32822332671c90812c6780d05157e8.Shared CI prerequisite: #13220 fixes main's duplicate write-watch fault-test registration. The macOS write-watch jobs currently fail in CMake configuration before compiling or executing this PR's fixture. This PR needs that existing fix first for the shared macOS checks; no duplicate implementation or unrelated source change is added here.
Tested
Exact submitted head
442aef391ffaec2c9cfe1d098c84dde5f19cd292. Recorded main6a3afa4deb18ea58a90efb8040fff8c60e4f2aab; prerequisite #13220e9f09f54fabb6408d3e2711b8df10c10112ab00e. Both and the previous published topic head are ancestors. The fixture and topic assertions remain unchanged.Fresh native validation uses combined commit
099d1af76d85818308412d7dd864f8bb4a1cd013, containing all 13 exact submitted heads, on Windows 11 / MinGW GCC 15.2 / CMake 4.3.1 and non-root Ubuntu 26.04 / WSL / GCC 15.2 / CMake 4.2.3. This is explicit combined-commit validation, not 13 separate native product builds. Every individual fixture blob matches that combined tree; pairwise main/prerequisite merges are clean.guest_stpcpy_extentis included exactly once. No timeout was raised.The combined native target build is not the complete default product build. No local macOS/WASM, PS5/title/GPU or firmware validation is claimed. Old red CI belongs to older heads without the prerequisite; new-head hosted CI starts after publication and remains pending until it actually completes. The prerequisite's external branch is unchanged.
Exact composition of the fresh native validation
#13310
ab8eeea15ea0dcb8aabe95e656a041963f8e4e8a, #133131ec676984f08d1ee65496d0d1c487a9fecb8ec49, #133141c8549945e9657645da7ce5a98693d50e85b5685, #13317442aef391ffaec2c9cfe1d098c84dde5f19cd292, #13319dab492c88b6bd8093c351b1726db02ad91af39ab, #13320f27454e88a02dd9c9f0510d3afb0aa72378f7e87, #133788bb9ed3e152ea1611fe8216f25dd03c7830f2818, #133799b39858ef369da4f3eb01e4137e3f932a478ebd2, #133806083413b06d03a34e498629da942b8ec40ab7a9f, #13381cf303f4142403e370f807813b99fc5aa087ad72b, #1339115fbf68aa97b2617cd03ae94f033020028edeac6, #13394cb3188c2b1f36700f882311191f86b897c4f01cb, #133958165ef480879e5eed57eb8f631abc924aed02ec7Earlier author-reported validation (historical heads; not new results)
Topic head:
a3001bab8d1aba5f601a300aa231104bf773f5f0. Combined integration:cedab5157a32822332671c90812c6780d05157e8, based on main51c31ea17e9f66cb36fe9655ec31c81610bfcfc9. Ubuntu/WSL GCC 15.2, CMake 4.2.3, Python 3.14.4; Windows MinGW GCC 15.2, CMake 4.3.1, Python 3.14.3.The registered test calls the actual libc through canonical headers, using OS-protected pages and real input/output buffers. A separate exact-head control compiled the whole relevant production source unit with this fixture: unchanged production code passed, and the fixture rejected an intentional production-function defect. This is a source-unit control, separately from the product build below.
Registered CTest
guest_stpcpy_extentpassed on Linux and Windows as part of the filtered twenty-topic run:ctest --test-dir <build> -R <20-topic-pattern> -j 8 -V --output-on-failure, 20/20 passed on each platform, zero skips.cmake --build <linux-full-build> --parallel 8: complete default Linux product build passed. Windows used the full configuration and built the sixteen affected libc test targets plus relinker with--parallel 8; a complete default Windows build is not claimed. Conventions, whitespace, script registration and the public-header declaration/umbrella audit passed. No PS5, title or GPU validation run is claimed. macOS, WASM execution and hosted full-build CI are not reported as passed.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)