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

「脆弱性の多いプログラミング言語」ランキング、C言語が大差で1位に」記事へのコメント

  • by Anonymous Coward

    C言語は標準設定で、ポインタ・配列の境界チェックをしたり、
    セキュアな代替関数がある命令(snprintfとか)は、非セキュアなオリジナル命令を無効にするとか
    すればいいとおもう

    もちろん、コンパイルオプションや、コード内で明示的に指定することでそれらを無効にして、
    高速なコードを書きたい人は書けるようにして

    OSやlibc等速度が必要なコードはチェックを無効にしてビルド、
    一般アプリはチェックを有効にしてビルドとか

    • by Anonymous Coward

      snprintf は sprintf よりはセキュアだけど、サイズを間違えたらバッファオーバランする。
      あと、strcpy とか strcmp とかの非セキュア関数の代替関数はどうしよう。

      • by Anonymous Coward

        単なる例だと思うけれど、 snprintfで指定するサイズ間違える時点ですでに使い方がおかしい。

        お作法無視して無頓着に簡略化してコード書くからおかしなことになるだけで
        C言語の脆弱性はプログラマがそういう書き方しているからとしかおもわないんだよなー
        C言語でのリソース管理はプログラマのお仕事ですよと。

        セキュア関数って基本は、車輪の再開発程度にしか思えないんだけど
        NUL終端してない文字列とかあそこまで意識する必要があるのかね。。
        そういうのって文字列じゃなくてバイナリデータの扱いにするだけと思うのだけれど

        • by Anonymous Coward

          snprintf の n が何のためにあるのか知らない人がいるのですよ。
          n に何を渡すか分かってないから、結果それで防止できるはずのバグが防止できないとかよくある。

未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー

処理中...