2009年07月31日

たった1つのタイプミス

こんな記事を見かけた。

「IE」に対する最新攻撃の原因、たった1つのタイプミス--MSが認める
http://japan.cnet.com/news/sec/story/0,2000056024,20397505,00.htm

こんなコードだったそうな。

__int64 cbSize;
hr = pStream->Read((void*) &cbSize, sizeof(cbSize), NULL);
BYTE *pbArray;
HRESULT hr = SafeArrayAccessData(psa, reinterpret_cast(&pbArray));
hr = pStream->Read((void*)&pbArray, (ULONG)cbSize, NULL);

さて、問題があるのはどこでしょう?
回答は元記事参照。

個人的には、タイプミスというよりは、行ごとコピペして一部を直す感じで書いて、その時に頭が働いてなくて落とし忘れた、というプロセスを思いました。自分ならそんな感じで生み出しそう。

ていうか、これATLのバグですか。それっていろいろヤバい気が……


C++を書いてる時って、こういうバグが出る可能性に対しても(主にテストの時に)頭を働かせないといけなくて疲れます。まぁ、やりたい放題できる爽快感というのも同時にありますが。

今度、職場にC++を導入しようと画策しているので、その時は気をつけよう。気を付けても出るタイプのバグな気もするけど、気をつけよう。