pit-rayの備忘録

気づいたことや調べたことをまとめていくブログ

<C言語>解放後のポインタにNULLを代入するべき(ダングリングポインタ)

今回題材とするのはダングリングポインタ(dangling pointer)です。
ここで出てくるdanglingというのはぶら下がるという意味で、ポインタがどこのメモリを指しているのかわからない状態を指します。

ダングリングポインタは攻撃ができる脆弱性につながる可能性があります。
そのため、プログラムのセキュリティを向上させるために今一度確認してみてください。

今回特に取り上げるのはfree関数で解放したポインタに関するものです。
free関数で解放したポインタというのはどこのメモリを指しているのかわからない状態、つまり、ダングリングポインタになっています。

対策としてはそこまで大変ではなく、free関数の後に開放したポインタにNULLを代入し、ヌルポインタにするだけです。これで、ダングリング状態から外れます。

ここで、ダングリングポインタで危険なのは解放済みのメモリにアクセスするということであるため、free関数直後にreturnで値を返す場合は特にNULLにしなくても大丈夫です。



<まとめ>
解放したポインタにアクセスする可能性があるときはNULLを代入する

<参考文献>
MEM01-C. Store a new value in pointers immediately after free() - SEI CERT C Coding Standard - Confluence
MEM30-C. Do not access freed memory - SEI CERT C Coding Standard - Confluence

Windows10にしたらシャットダウンを妨げる謎のプログラムに悩まされた件について

どうも。
本日はとても良い天気です。

先日、Windows10にアップグレードしてからというもの、名前不明の謎のプログラムにシャットダウンを悩まされていました。

そしてググっていた結果、原因が判明しました。
この時にヒットしたサイトを載せておきます。
enjoypclife.net

このサイトがなければ、一から原因を探す羽目になっていたでしょう。(一応、トラブルシューティング的なものはいろいろまわしましたが...)
本当に感謝します。
ありがたやぁ~ありがたやぁ~

今回の問題の概要を話すと、
私がずっと愛用しているソフトウェアが原因でした。

Orchis

f:id:pit-ray:20180416142707g:plain
※アイコンの著作権保護のため意図的にぼかしてます。

というものです。
このソフトはコマンドなどにより、アプリケーションのショートカット一覧を起動できるという有名なランチャーソフトです。

これマジで使えます。
上のgif画像のようにマウスカーソルの位置に起動することもできます

だまされたと思って使ってみてください。

このソフトはWindows10ではシャットダウンの際の検出に引っかかるみたいです。

対策としては
OrchisをWindows10対応のものにアップデートするだけです。
ちなみに、アップデートの際、設定ファイルは引き継がれますので、以下のダウンロードページからインストーラーをダウンロードして実行するだけです。


Orchisをダウンロードする


最初に載せたサイトのパクりみたいな感じになってしまったので、
enjoypclife.net
に一度飛んで、あちらのサイトにもアクセスしてみてください。
リンク先のサイトには「このアプリがシャットダウンを妨げています。」の原因を特定する方法まで書かれています。
どうかクリックorタップしてみてください。

では