The note told Windows users to set TEMP and TMP to a directory the scanner
excludes, but since 39dd854c8 CTest sets TMPDIR, TEMP and TMP of the
relinker tests to core/relinker/test-temp in the build directory, so those
variables no longer move the executables. Name that directory instead and
add windows_bss and windows_fixed_base, which fail the same way when the
scanner blocks the executables they run.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
FreeBSD 11.4's vn_open_cred does not follow the last component when
O_EXCL is set, so O_CREAT|O_EXCL on a symbolic link fails with EEXIST
whatever it points to. On Windows the host open followed a dangling link
and created its target. A reparse point in the last component now fails
O_CREAT|O_EXCL with EEXIST before the host open.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
_wchmod changes the read-only attribute of the path it is given, so on
Windows chmod through a symbolic link changed the link and left the file
it names unchanged, and a dangling link succeeded. A reparse point is now
opened through its target and the target's path is changed, as FreeBSD
11.4's sys_chmod passes FOLLOW: a missing target fails with ENOENT and a
link loop with ELOOP. The path lookup of a handle moves out of
WindowsDescriptorPath_nid_no_patch so both use it.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
access read the attributes and the security descriptor of the link
itself on Windows, so a dangling link passed F_OK and R_OK and a link to
a read-only file passed W_OK. A reparse point is now opened through its
target and the target's path is checked, as FreeBSD 11.4's kern_accessat
looks the path up with FOLLOW: a missing target fails with ENOENT and a
link loop with ELOOP.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Wrap the prepare_release_notes entrypoint in main(argv=None) with UTF-8
stream reconfiguration using backslashreplace error handling.
Decode release notes JSON with utf-8-sig to accept UTF-8 BOM headers.
Catch OSError and ValueError in main and report them via parser.error
rather than propagating unhandled tracebacks.
CRYPTO_malloc threw for a size of zero or less. LibreSSL 2.5.4, 3.4.1
and 3.4.3 all take an int size and return null there, so it now does
the same, and the test checks for null instead of a throw.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Control the presentation clock via the test hook, sync the override on Rebase so assertions observe real rebases, and cover both drift directions plus the exact 50 ms boundary.
Co-authored-by: Cursor <[email protected]>
A per-thread collect memo hit read the tracker generation without the
tracker mutex. A walk running on another thread bumps the generation
before it stamps the blocks it finds written, so the hit could return
a value that walk then stamps blocks with; a caller that recorded it as
its verified generation trusts those blocks in every later
UnchangedSince and never refreshes them.
The tracker now publishes the generation each time an update releases
its mutex (TrackerLock), after every stamp of that update is in place,
and a memo hit returns the published value. MarkWritten's release around
beforeUnwatch does not publish, since it stamps again after relocking.
The per-epoch collect map hit returns the published value too. Completed MarkWritten
bumps are still seen at once; a value older than the live one only
makes a check fail and refresh.
agc_collect_memo_generation links GuestMemory against a fake write watch
that holds a walk after its generation bump, takes a memo hit on another
thread meanwhile, and checks the write the walk then stamps is not
trusted against the generation the hit returned.
sceSysmoduleIsLoaded, sceSysmoduleLoadModule and sceSysmoduleUnloadModule now accept only the 141 ids a payload process on a PS5 (firmware 13.60) accepted, and return 0x805A1000 for the rest instead of logging and returning 0.
Co-Authored-By: Claude Opus 5.5 <[email protected]>