已关闭
【缺陷报告】空指针解引用 - 文件fft1_d_exec_api.cpp - 函数aclfftExecC2C_1D - 行号58 #50
zhangjunkai9创建于 5 天前关闭于 5 天前
5 天前 将 yanghhu 设为负责人
5 天前 issue状态由 进行中 改变为 已解决
5 天前 关闭了 issue
5 天前 添加了label:resolved
4 天前 关联了pull request:fix(arch32/arch35): 补全 fft2_d/rfft1_d/irfft1_d 空指针防御性校验


缺陷信息
缺陷描述
函数 aclfftExecC2C_1D(arch32)的入参 plan 赋值给 impl 后,在第58行通过 ACLFFT_CHECK_PARAM 宏直接解引用 impl->rank,未对 plan/impl 做空指针校验。ACLFFT_CHECK_PARAM 宏展开为 do { if(!(condition)) { return error_code; } } while(0),条件表达式 impl->rank == 1 在 if 判断前被求值,即 impl->rank 被解引用。aclfftHandle 是指向 aclfftHandle_t 的指针类型(typedef struct aclfftHandle_t* aclfftHandle),NULL 是合法值。该函数为 extern "C" 公共 API,外部调用方可能传入 NULL plan,导致空指针解引用崩溃。
事实核查
数据流证据
传播路径:
调用链
可达调用链1 起点:
(entry functions)→ 终点:aclfftExecC2C_1D深度:0修复建议
ACLFFT_CHECK_NULL(plan); aclfftHandle_t* impl = plan; ACLFFT_CHECK_PARAM(impl->rank == 1, ACLFFT_INVALID_VALUE);