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

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

  • by Anonymous Coward

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

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

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

    • by Anonymous Coward

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

      • by Anonymous Coward on 2019年03月30日 21時40分 (#3590616)

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

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

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

        親コメント
        • by Anonymous Coward

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

          • by Anonymous Coward

            snprintfはsprintfの相対的なセキュア版でしかないからね。
            意味がわからない方が良識的だと思う。

犯人はmoriwaka -- Anonymous Coward

処理中...