Skip to content

fix: 原地写只改 body,越界硬错(ViewWrite 收紧 len == value_len) - #68

Merged
miaobyte merged 1 commit into
mainfrom
fix/inplace-body-guard
Nov 1, 2026
Merged

miaobyte merged 1 commit into
mainfrom
fix/inplace-body-guard

Conversation

@miaobyte

@miaobyte miaobyte commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

与 kvlang runtimec2 侧配套的收紧:原地写只改 body、越界硬错。

对端

kvlang 侧的 #607(body 直写改用 head 声明长度)与 #616(复合描述符 *[0,+k]·rest)。
单边合入会让「原地写只改 body」的契约半成立——runtime 侧按 head 长度写、后端仍按容量放行时,越界不会被拦住。

内容(6 文件,+201/−11)

  • src/kvspace.c:body 直写按 head 声明长度限制,越界直接硬错,不再静默写到容量区
  • src/kvspace_shm.h、src/durable_abi.c:配套调整
  • ViewWrite 契约收紧:len 必须等于 value_len
  • tests/test_inplace_body_only.c(新增 160 行契约测试)、tests/test_slot_view.c 同步、CMakeLists.txt 增加测试目标

双向证据

旧库(3850c4a4 源码 + 新测试):失败

FAIL tests/test_inplace_body_only.c:122: SetPart(offset=0) must fail
FAIL tests/test_inplace_body_only.c:125: value intact after rejected head write
4 failure(s)
0% tests passed, 1 tests failed out of 1

新库(本分支):通过

10/11 Test #10: inplace_body_only ................   Passed
100% tests passed, 0 tests failed out of 11

构建:CMake Release,ctest 11/11 通过(作者报 11/11,一致)。

🤖 Generated with Claude Code

- body 直写按 head 声明长度限制,越界直接硬错,不再静默写到容量区
- ViewWrite 契约收紧:len 必须等于 value_len
- 新增契约测试 tests/test_inplace_body_only(旧库失败、新库通过)

Co-Authored-By: Claude Code <noreply@anthropic.com>
@miaobyte
miaobyte merged commit bf26030 into main Nov 1, 2026
2 of 4 checks passed
@miaobyte
miaobyte deleted the fix/inplace-body-guard branch November 2, 2026 01:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant