パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

Interviews: Theo de Raadt Responds (8)」記事へのコメント

  • by SOggy (10951) on 2003年05月01日 18時58分 (#308180) 日記

    コード監査 by AT
    コードを監査するに当たって、何かアドバイスをいただけませんか。今までバグを見つけてきた経験から有用だったティップスや方法に関して教えていただけるとありがたいです。出来立ての若いコードの場合は、まずどこを探りますか?。古いコードの場合は?。

    テオ:
    一番のティップスは、今よりももっと良いプログラマーになる、ってことかな。特に、対象のプログラムがどんな関数を使っているのか調べること、そしてその関数の決まりごとをきっちりと守って使っているか確かめることが重要だよ。これを読む人の中の果たして何人が、libcの全ての関数の完全で正しいセマンティクスを知っているんだろう。全部と言わずに、今監査しているプログラムの中で使っているlibcの関数についてだけでも、ちゃんと分かっている人はどれだけいるんだろうね。(どういうことかって言うと、今までソースツリー全部を調べてきて、strncat()やstrncpy()の呼び出しのだいたい半分は微妙に間違っていて、一文字余計にコピーしちゃってヌル終端しなくなるだけだとしても、それはやっぱりいい具合じゃないってこと)

    APIを完全に身に付けた時に、簡単にバグを見つけることができるようになるだろう。勤勉さが必要な他の仕事と一緒だと思うよ。注意深くあって欲しい。人は前例から学ぶものなのに、依然としてソフトウェアプログラミングの世界では、その途方もない複雑さが見つけにくいバグを生み、それはさらに新しいコードにコピーされているんだ。関数を間違って定義したマニュアルを見つけたことすらあるんだけれど、その時には多くのプログラマーが、間違ったマニュアルに重ねて間違ったプログラムを書いていた…。

    ----------
    フォロー下さったnumaさんと、日記でチェックしてくれたdsegさんのおかげで、少し修正しました。どうもありがとうございます。

    第一段落末尾のsloppyが「いい具合じゃない」と書きましたが、もっと強い否定の意味にした方が良いかもしれません。

    # extraが副詞なのは、場所で分かるべきべきべき。
    # セマンティクスはこなれた訳語がありますか?。最終的にこれ読む人はほとんど分かるからオッケー?。

皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー

処理中...