前回 WinDbg を使って、strlen のコードで落ちている事を突き止めて、strnlen で対処しまくりました。
本日、これでも、まだ strlen で落ちるバグが1種類存在する事が判明。もう、これは自分のコードだけども直接自分がstrlenを使った箇所でないと考えるより無い。ぼーっと考えてたら、SysStringByteLen しかやってないコードがあったかも?と、思い当たった。ガリガリ使用される場所ではないだけに、盲点だった…。BSTR型が NULL かどうか、根本的なチェックを忘れてる orz ...。この関数をコールする側で、パラメータをNULLにされる事を想定していなかったのだ。
という訳で、残す致命的なバグも無事に修正完了。
今日の教訓:今更ながら、何年経っても pre condition は大切
0 件のコメント:
コメントを投稿