Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

単純な間違いはなくなりません

Single misplaced '&' caused latest IE exploit - CNET News

なんと模範的な「C形式キャストによる失敗例」。
static_castを使っていれば……って、ポインタ型からvoid*へならそもそもキャストいらないか。
「すぐ近くにあるコードと書き方が揃っているから正しいと錯覚してしまう例」とも言える。間違い方のパターンとしては割とよくある。

それはともかく。

HRESULT hr = SafeArrayAccessData(psa, reinterpret_cast(&pbArray));

CNETの記事のこの部分。reinterpret_castにテンプレート引数がない。
元記事の方にはあるのに、どこに消えた……? と思ったら

<p>The code lines he listed were:<br />
__int64 cbSize;<br />
hr = pStream->Read((void*) &cbSize, sizeof(cbSize), NULL);<br />
BYTE *pbArray;<br />
HRESULT hr = SafeArrayAccessData(psa, reinterpret_cast<LPVOID *>(&pbArray));<br />
hr = pStream->Read((void*)&pbArray, (ULONG)cbSize, NULL);
</p>

実体参照していないからタグ扱いされているらしい。
( ´∀`) あるある。

そしてこの記事、日本語版では

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

テンプレート引数はもはやソースにも残っていなかった。

こうして人知れず情報は抜け落ちていくのであった。

スポンサーサイト

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://idlysphere.blog66.fc2.com/tb.php/211-73ef0343
この記事にトラックバックする(FC2ブログユーザー)

Appendix

タグ

Blog内検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。