| Comment: | container: a damaged container is an error, never a crash or wrong bytes
The first nightly soak flipped one bit in a valid container and brought the process down inside the standard inflate: an integer underflow in its end-of-input bit peek that a truncated stream can arrange, reachable from any peer through every sync body. The decoder is now the tree's own copy of the standard one (Zig 0.16.0, MIT) with the comparison reordered so the stream ends, and its origin noted. With the crash gone the same bytes decoded to 58 bytes reported as good: the flip made a block final, and the zlib footer's Adler-32 was read but never checked, by the decoder or by us. The codec now requires a finished stream and verifies the footer against the output. The exact bytes are a fixed test. |
|---|---|
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
46fcd75fc331daaf0bf0f43bb9d09945 |
| User & Date: | dmestas on 2026-09-19 14:40:06.143 |
| Other Links: | manifest | tags |
|
2026-09-19
| ||
| 14:45 |
Release 0.3.24
Closing a protected branch is a protected move; a damaged sync container is an error, not a crash. check-in: 3bcbc1c903 user: dmestas tags: trunk, version-0.3.24 | |
| 14:40 |
container: a damaged container is an error, never a crash or wrong bytes
The first nightly soak flipped one bit in a valid container and brought the process down inside the standard inflate: an integer underflow in its end-of-input bit peek that a truncated stream can arrange, reachable from any peer through every sync body. The decoder is now the tree's own copy of the standard one (Zig 0.16.0, MIT) with the comparison reordered so the stream ends, and its origin noted. With the crash gone the same bytes decoded to 58 bytes reported as good: the flip made a block final, and the zlib footer's Adler-32 was read but never checked, by the decoder or by us. The codec now requires a finished stream and verifies the footer against the output. The exact bytes are a fixed test. check-in: 46fcd75fc3 user: dmestas tags: trunk | |
| 14:40 |
sync: a closed tag on a protected branch is refused
The push gate judged tags by the branch they named, so sym-B and branch=B were refused under any sign while a closed tag, which names a check-in, was admitted: an account that could not push onto trunk could close its tip, and the owners' next commit was refused against a closed leaf with no cause named. A closed tag aimed at a held check-in now resolves that check-in's branch and is refused when the branch is protected, under any sign, saying close or reopen. A release name on the leaf, a close off the branch, and a close of an unheld target stay admitted; a resolver fault still fails closed. check-in: ff30ba16e8 user: dmestas tags: trunk | |