diff --git a/App/lib/core/Gen/FuncGenBase.vp b/App/lib/core/Gen/FuncGenBase.vp index 12943b3..02ad7c1 100644 --- a/App/lib/core/Gen/FuncGenBase.vp +++ b/App/lib/core/Gen/FuncGenBase.vp @@ -211,14 +211,18 @@ class FuncGenBase(CallGenBase.CallGenBase): # 支持的属性:如果缓冲区非空,先追加空格分隔 if attrs_buf[0] != '\0': - self._append_str(attrs_buf, " ") - self._append_str(attrs_buf, llvm_name) + self._append_str(attrs_buf, " ", 256) + self._append_str(attrs_buf, llvm_name, 256) return 1 def _append_str(self, buf: str, s: str, max_len: t.CSizeT = 256) -> None: """将字符串追加到 buf 末尾(有界,防 strcpy 越界写穿定长缓冲)""" if buf is None or s is None: return + # 防御:TPV 方法默认参数注册存在缺陷(缺参调用 max_len 落到 0), + # 显式兜底为 256,避免有界写入检查误判丢弃全部属性文本。 + if max_len == 0: + max_len = 256 cur_len: t.CSizeT = string.strlen(buf) s_len: t.CSizeT = string.strlen(s) stdio.printf("[ATTR] _append_str: max_len=%zu cur=%zu slen=%zu s='%s'\n", max_len, cur_len, s_len, s)