You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Veracode扫描报告中CWE ID 252的Unchecked Return Value错误?

修复方案

CWE ID 252漏洞触发的核心原因是malloc函数执行内存分配时可能因系统内存不足等场景返回NULL,原代码未校验该返回值就直接将指针传入后续sysctlbyname调用,存在空指针访问的安全风险。

修复后的完整代码

char *machine = malloc(size);
// 新增malloc返回值非空校验
if (machine == NULL) {
    // 内存分配失败时的业务处理逻辑,可根据实际需求调整,示例为返回空字符串
    NSString *platform = @"";
} else {
    // 仅分配成功时执行后续系统调用和字符串转换逻辑
    sysctlbyname("hw.machine", machine, &size, NULL, 0);
    NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding];
    free(machine);
}

补充说明

  • 内存分配失败分支的处理逻辑可按需调整,比如返回默认平台标识、向上层抛出异常等,只要保证不会对NULL指针做读写操作即可
  • 你也可以额外补充sysctlbyname的返回值校验,该系统调用执行失败时也会返回非0的错误码,增加对应校验可以进一步提升代码鲁棒性
  • 不需要在machine为NULL的分支执行free操作,虽然C标准规定传入NULL到free是安全的,但分支隔离后逻辑可读性更高

内容的提问来源于stack exchange,提问作者Prajnaranjan Das

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 19:24:03