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

如何修复Veracode检测到的CWE ID 416: Use After Free释放后使用漏洞

修复方案

Veracode触发CWE ID 416报错的原因是静态安全扫描规则要求:堆内存被释放后,所有指向该内存的指针必须显式置为NULL,避免后续出现野指针误访问的风险。当前代码逻辑本身不存在实际的释放后使用行为,+[NSData dataWithBytes:length:]方法会自动拷贝传入的字节内容,outputBuffer释放不会影响返回的result对象可用性,只是未满足扫描规则的显式置空要求。

修复后的完整代码如下:

+ (NSData *)dataFromBase64String:(NSString *)aString
{
    NSData *data = [aString dataUsingEncoding:NSASCIIStringEncoding];
    size_t outputLength = 0;
    void *outputBuffer = NewBase64Decode([data bytes], [data length], &outputLength);
    NSData *result = [NSData dataWithBytes:outputBuffer length:outputLength];
    free(outputBuffer);
    outputBuffer = NULL; // 新增释放后置空逻辑,符合Veracode修复要求
    return result;
}
  • 该修复完全兼容原有业务逻辑,不会产生任何功能异常
  • 如果存在多个指针指向同一块被释放的堆内存,需要将所有关联指针都置为NULL才能完全通过Veracode扫描校验

内容的提问来源于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:27:03