タグ

ブックマーク / yohhoy.hatenadiary.jp (2)

  • パスワードとmemset関数 - yohhoyの日記

    C言語プログラム上で高機密性情報(パスワード文字列など)を消去するケースで、memset関数の単純利用では機密情報がメモリ上に残存してしまい、セキュリティ上の脆弱性につながる可能性がある。 void secure_operation() { // パスワード文字列を取得 char passwd[128]; get_password(passwd, sizeof(passwd)); //... // メモリ上の高機密データを消去... memset(passwd, 0, sizeof(passwd)); // ?? } 上記コードではパスワード文字列が格納された変数passwdを使用後にゼロクリアしているが、コンパイル時の最適化によりmemset関数呼び出しが削除される可能性がある。この(プログラマの意図に反する)最適化は、C言語の言語仕様上も許容されるコンパイラの振る舞いとなっている。*1

    パスワードとmemset関数 - yohhoyの日記
    labunix
    labunix 2014/03/24
  • エルビス演算子(Elvis operator) - yohhoyの日記

    プログラミング言語Javaに対して、Project Coinで提案されていた エルビス演算子(Elvis operator)?:についてメモ*1。Groovy 1.5では同演算子が採用されており、GroovyからJavaへのフィードバック提案となっている。 二項演算子の一種。左オペランドが非nullならば左オペランドの値を、左オペランドがnullならば右オペランドを評価して返す(短絡評価)。機能的にはC#のnull合体演算子(null-coalescing operator)??や、gccでのGNU C拡張 “条件演算子 ?: で第2項を省略” と等価。 FEATURE SUMMARY: The ?: binary "Elvis" operator results in the value of the left-hand-side if it is not null, avoiding

    エルビス演算子(Elvis operator) - yohhoyの日記
    labunix
    labunix 2013/05/12
  • 1