From 0d4b7ff491b852da0b8c35c585b68456464c8b5f Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Wed, 26 Aug 2026 22:03:57 +0800 Subject: [PATCH] =?UTF-8?q?fix(funcattrs):=20=E6=98=BE=E5=BC=8F=E4=BC=A0?= =?UTF-8?q?=20max=5Flen=20=E5=B9=B6=E5=85=9C=E5=BA=95=200=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=96=B9=E6=B3=95=E9=BB=98=E8=AE=A4=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E7=BC=BA=E9=99=B7=E8=87=B4=E5=B1=9E=E6=80=A7=E6=96=87?= =?UTF-8?q?=E6=9C=AC=E5=85=A8=E8=A2=AB=E4=B8=A2=E5=BC=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App/lib/core/Gen/FuncGenBase.vp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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)