Electric Fenceの使い方

まずはインストール(環境はCentOS5.5)

# yum -y install ElectricFence

サンプルコードsample1.cpp作成

#include 
int main(){
  char *c;
  c = new char(4);
  c[4] = 0;
  return 0;
}

まずは普通にビルドして実行。

$ g++ -Wall -g sample1.cpp -o sample1
$ ./sample1

領域破壊してるのに、なんもでねぇ・・・・。
次にElectricFenceを有効化してビルド。

$ g++ -Wall -g sample1.cpp -o sample1 -lefence
$ ./sample1
  Electric Fence 2.2.0 Copyright (C) 1987-1999 Bruce Perens 
セグメンテーション違反です (core dumped)

おおー!!見事に検知!
coreダンプも覗いてみる。

$ gdb sample1 core.10315
Core was generated by `./sample1'.
Program terminated with signal 11, Segmentation fault.
#0  0x0804854d in main () at sample1.cpp:5
5         c[4] = 0;
(gdb)

バッファオーバーランした箇所がばっちり特定できます。
参考:http://blog.soi33.org/?p=224

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です