已关闭
【缺陷报告】空指针解引用 - 文件aclnn_logdet.cpp - 函数aclnnLogdetGetWorkspaceSize - 行号165 #2776
zhangjunkai9创建于 8月20日关闭于 7 天前
陈思
8月21日 评论:
8月21日 评论:
8月30日 关联了pull request:Fix logdet null-pointer dereference (#2776)
28 天前 将 gcw_LxlU8H9L 设为负责人
28 天前 移除了负责人 gcw_LxlU8H9L
28 天前 将 gcw_LxlU8H9L 设为负责人
OpenGood_WeChat
28 天前 评论:
28 天前 评论:
感谢确认根因!本人认领该问题,修复 PR 已提交:#5216(将 signValue 判空移至首次使用之前,与上述修复建议方向一致),已通过 CLA 与 CI,正在等待检视合入,合入后本 issue 将自动关闭。


liuchenghao
17 天前 评论:
17 天前 评论:
【Multica 同步】状态:backlog(已建单跟踪);说明:该修复任务已同步至 Multica「CANN 算子开发迁移」项目跟踪;已知悉社区侧认领状态与在途修复 PR(#5216),Multica 侧是否承接将先与社区协调,避免重复开发;详情:AI4ME-130


10 天前 关联了pull request:fix(logdet): validate signValue before Log (#2776)
liu-wei
7 天前 评论:
7 天前 评论:
该问题已经合入,issue关闭。


7 天前 issue状态由 进行中 改变为 已完成
7 天前 关闭了 issue
缺陷信息
缺陷描述
aclnnLogdetGetWorkspaceSize 中,LogMatrixDeterminant 返回 tuple 的第一个元素 signValue 未做空指针校验即在第 165 行传入 l0op::Log(signValue, ...),而 Log 函数会解引用 signValue(self->GetViewShape())。同函数第 169 行对第二个元素 logValue 做了 CHECK_RET(logValue != nullptr, ...) 校验,但该校验位于 signValue 使用之后,无法保护 signValue。若 LogMatrixDeterminant 返回 tuple(nullptr, nullptr)(AllocTensor 失败或 ADD_TO_LAUNCHER_LIST_AICPU 失败时),signValue 在第 165 行被 l0op::Log 解引用时将崩溃。对比 aclnn_slogdet.cpp 第 162-165 行对 signValue 和 logValue 均做了 nullptr 校验。
事实核查
数据流证据
传播路径:
修复建议
auto signValue = std::get<0>(logMatrixDeterminantOut); CHECK_RET(signValue != nullptr, ACLNN_ERR_INNER_NULLPTR); auto offset = l0op::Log(signValue, LOG_BASE, LOG_SCALE, LOG_SHIFT, uniqueExecutor.get());