* freeのセキュリティチェック
-(by [[K]], 2013.08.23)
** (0) これはなに?
-これは[[K]]のメモをただ公開しているだけです。あまり気にしないでください。
** (1) チェックリスト
-(a) mallocしていないアドレスに対してfreeしたら、SE(セキュリティ例外)にしなければいけない。
--p=malloc(...); p++; free(p); みたいなものももちろん検出できる。
--ポインタは簡単にmalloc時の先頭アドレスを引けるから、それとpが一致していなければSEにしてしまえばいい。
-(b) 既にfreeされているアドレスに対してfreeしたらSEにしなければいけない。
--liveSignを見ればできる。
-(c) 関数のポインタはfreeできない。プログラムラベルなども同様。コード内のdataセクションもfreeできない。これらをfreeするにはjitcの制御APIを使う。
-(c) 関数のポインタはfreeできない。プログラムラベルなども同様。コード内のdataセクションもfreeできない。・・・っていうかmallocで得たものではないから当然か。・・・これらをfreeするにはjitcの制御APIを使う。

** (2) やらないリスト
-(A) p++とかでpがずらされていても、システムはmalloc時の先頭アドレスを知っているので、気を利かせてfreeを完了させることはその気になればできるが、それはしない。なぜならセキュリティをOFFにできなくなるから。

** (3) メモ
-なんだ結構簡単そうだな・・・まずは未完のliveSignからかな。 -- ''K'' SIZE(10){2013-08-23 (金) 11:29:03}
-C言語と同様にNULLをfreeしたときには何もしないことにしよう。 -- ''K'' SIZE(10){2013-08-23 (金) 11:47:35}


#comment

* こめんと欄
#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS