fix(funcattrs): 显式传 max_len 并兜底 0,修复方法默认参数缺陷致属性文本全被丢弃
This commit is contained in:
1 parent
ec45dd0195
commit
0d4b7ff491
1 file changed
+6
-2
@@ -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)
|
||||
|
||||
Reference in new issue
Block a user