问题
我正试图创建一个缓冲区溢出,以便进一步了解地址消毒剂。我已经编写了下面的代码,我认为这将创建一个缓冲区溢出,但是我一定弄错了,因为它没有抛出预期的"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/

10-11 15:31