【发布时间】:2021-11-04 05:54:48
【问题描述】:
如何修复免费后使用 Veracode (CWE ID 416)
Veracode 的建议:确保所有指针在它们指向的内存被释放后都设置为 NULL。
错误指向:第 8 行“返回结果;”
+ (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);
return result;
}
【问题讨论】:
-
outputBuffer=NULL;在free(outputBuffer);之后 -
@OlSen 你的意思是说 if (outputBuffer != NULL) { free(outputBuffer); } ?但是他们在“返回结果”上指出了错误;
-
您的解释也可以。因为如果它 outputBuffer 不是 NULL 它需要再次空闲。结果必须返回,你不能在你返回之前释放它但是你可以返回 nil 如果 ouputBuffer==NULL
-
你有理由相信这个工具知道它在说什么(特别是它指向哪条线?)从你对这个工具的问题来看,听起来正确的方法是打开支持使用 Veracode 的票证。我怀疑他们的工具坏了。
-
@OlSen 我尝试了您提到的上述解决方案,但没有通过 veracode 的扫描报告。你能指导我现在如何解决它吗?
标签: ios objective-c veracode