タグ

JPCERTとCに関するItisangoのブックマーク (4)

  • ENV34-C. getenv() が返す文字列へのポインタを保存しない

    ENV34-C. getenv() が返す文字列へのポインタを保存しない C 標準では getenv() の動作を次のように規定している。[ISO/IEC 9899:2011] getenv 関数は、一致する並び(environment list)の要素に結び付けられた文字列へのポインタを返す。このポインタが指す文字列をプログラムで変更してはならないが、引き続く getenv 関数の呼出しで書き換わることがある。 ゆえに、getenv() が返すポインタは保存すべきでない。このポインタは、2 回目以降に getenv() 関数を呼び出したときに上書きされたり、putenv() や setenv() の呼び出しによって環境変数の並びが変更された結果として無効になる可能性がある。getenv()が返すポインタを後で使用するために保存しておくと、ダングリングポインタとなったり、正しくないデータを

    ENV34-C. getenv() が返す文字列へのポインタを保存しない
  • FIO03-C. fopen() やファイル作成時の動作について勝手な想定をしない

    FIO03-C. fopen() やファイル作成時の動作について勝手な想定をしない C の fopen() 関数を使用して、既存のファイルをオープンしたり新規ファイルを作成することができる。C11 バージョンの fopen() と fopen_s() では、モードフラグ x を提供している。このフラグは、オープンしようとしているファイルが存在するかどうかの判断に必要なメカニズムを提供する。このモードフラグを使用しないと、意図しないファイルへの上書きやアクセスを行う可能性がある。 違反コード (fopen()) 以下のコード例では、file_name が参照するファイルを書き込み用にオープンしている。プログラマの意図がファイルの新規作成であり、参照先のファイルがすでに存在している場合には、このコード例は違反コードである。 char *file_name; FILE *fp; /* file_

    FIO03-C. fopen() やファイル作成時の動作について勝手な想定をしない
  • ERR04-C. プログラムの適切な終了方法を選択する

    ERR04-C. プログラムの適切な終了方法を選択する 範囲外エラーなど、いくつかのエラーはユーザの誤入力が原因で生じる場合がある。通常、対話型プログラムはこのようなエラーに対処するため、入力を拒否し、受け入れ可能な値の入力をユーザに促す。サーバはクライアントにエラーを示すことにより無効なユーザ入力を拒否し、同時にそれ例外のクライアントの有効な要求に対するサービスは続行する。揮発性ストレージに保存されたユーザデータの損失を防止することにより、少なくとも、メモリ残量低下(ディスクスペースの状態)などのリソースの不足に適切に対処するには、堅牢なプログラムを準備する必要がある。対話型プログラムを使用すると、ユーザはデータを代替メディアに保存でき、ネットワークサーバはスループットを落としたりサービス品質を低下させたりして対応できる。ただし、不確実な状態での実行を続行することによるリスクデータの破壊

    ERR04-C. プログラムの適切な終了方法を選択する
    Itisango
    Itisango 2020/02/05
    main()の実装方法が参考になる #C
  • ソースコード解析ツールを活用したCERTセキュアコーディングスタンダードの有効性評価

    Copyright ©2008 JPCERT/CC All rights reserved. ソースコード解析ツールを活用した CERT セキュアコーディングスタンダード の有効性評価 Stephen Dewhurst Chad Dougherty Yurie Ito(伊藤 友里恵) David Keaton Dan Saks Robert C. Seacord David Svoboda Chris Taschner Kazuya Togashi(富樫 一哉) 2008 年 6 月 Copyright ©2008 JPCERT/CC All rights reserved. Notifications and Disclaimers. The following notices and disclaimers must be contained on the unofficial SEI

  • 1