问题
我正试图创建一个缓冲区溢出,以便进一步了解地址消毒剂。我已经编写了下面的代码,我认为这将创建一个缓冲区溢出,但是我一定弄错了,因为它没有抛出预期的"Heap buffer overflow detected"
。
尝试
var ints : [UInt8] = [ 1, 2, 3, 4 ]
let a = UnsafeMutableBufferPointer(start: &ints, count: ints.count)
a[28] = 17 // array out of index
我已经通过单击我的应用程序>编辑方案在Xcode中启用了地址消毒剂…然后“启用地址消毒剂”。然后我在运行之前重新构建了我的应用程序。
问题
如何在swift 2中创建缓冲区溢出?
最佳答案
从https://developer.apple.com/videos/play/wwdc2015-413/?time=947
地址消毒剂是基于C语言的LLVM工具。
和https://developer.apple.com/videos/play/wwdc2015-413/?time=1422
为了使用地址消毒剂,Xcode将一个特殊标志传递给clang。
地址消毒剂似乎只适用于clang
对于C、Objective-C等,但不适用于Swift编译器。
触发缓冲区溢出的简单C程序是
#include <stdio.h>
#include <stdlib.h>
int main(int argc, const char * argv[]) {
int *p = malloc(4 * sizeof(int));
p[28] = 17;
return 0;
}
关于swift - 如何创建缓冲区溢出来测试Address Sanitizer?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34485008/