Cでしゃべる男TechEDの安全コードのセッションで、テオ(シーオか?)はMSが雇ったことがあるハッカーの中でも特別な存在で、まさにCをしゃべるために生まれてきたみたいだった、といような余談の中で、そのテオのありがたいお言葉として「幾らコードを眺めてもわからん、それが算術演算がらみのバグだ」ってのを紹介していた。Cをしゃべる男がそういうくらいだから我々凡人はコードを眺める以前の段階から攻めなきゃならない。その理由はCの型上げ規則が複雑だということととかいろいろ。(注:このコードがセッションに出てきたわけではない。dumped)コードの見た目は引数の長さを越えたり、バッファ長を越えたりしないように検証しているように見える。SIZEという定数の型の違いで正しく弾くこともできれば、死ぬこともできる。結論は、負になるはずが無い長さを符号付きの型で宣言するな、というのが教訓(っていうか、そのためのsize_t)。#追記:もう、strncpyとかsnprintfとかは常識なので、今の攻撃側のトレンドは上の例のような算術オーバーフローを利用したバッファオーバーフローらしい。