1

Address Sanitizer が valgrind の代わりに利用できることを読みました。それに入るために、私は簡単な例から始めました。以下のコードを use_after_free.c に記述しました。

#include<stdio.h>
#include<stdlib.h>

int gArray[100];

int main()
{
int *arr = (int*)malloc(5*sizeof(int));
arr[1]=45;
printf("Before Free : arr[1] = %d\n",arr[1]);
free(arr);
printf("After Free : arr[1] = %d\n",arr[1]);
printf("gArray[101] : %d\n",gArray[105]);
return 0;
}

次のライブラリをインストールしました:

1) apt-get install llvm 
2) apt-get install clang

次に、次のコマンドを使用してコードをコンパイルしました。

clang -O1 -g -fsanitize=address -fno-omit-frame-pointer use_after_free.c

上記のコマンドを使用して作成されたバイナリを実行すると、アドレス サニタイザーからのエラーが予想されました。しかし、エラーなしで出力を取得しています。私のアプローチに何か問題がありますか?

編集:ubuntu 12.04、llvm 3.1、およびclang 3.1を使用しています

4

1 に答える 1