GDI+のJpegファイルの取り扱いにてバッファオーバーフロー

こんな話題を取り上げる気は普通ならないんだけど、アップデートするとき疑問がわいたので取り上げ。
GDI+ で Jpeg ファイルを扱うのに問題があったから、修正された GDI+ にアップデートしましょー、という話で終わりそうなものだが、今回はそんなことでは収まらなかった。
GDI+ は GDI32 からみて次世代(?)の Windows Graphics のコアとなるライブラリだ。
オブジェクト指向的なインターフェスと全面的な Unicode 対応が図られ、ラスターオペレーションのようなビット的な操作ではなく、色や画像を直接扱うことが可能な率直な画像処理能力を提供している。*1
いまだに呼び出すと E_NOTIMPLEMENT とか返すにくいヤツでもある*2し、.NET で Windows アプリや画像処理アプリを作る場合には基本となるヤツである。
今回、何があったかというと、いわゆる DLL Hell というヤツを Microsoft 自身がやってしまったというかんじだろうか。
いくつかの現行OSは GDI+ を標準装備していないため、いくつかの Microsoft 製品や、GDI+ を利用しているいくつものアプリケーションは GDI+ をアプリケーションと共に OS に導入しなければならなかったのが大きな原因であろうか。
おかげで、GDI+ だけアップデートすれば修正されるにもかかわらず、Office やら Visual Studio やら .NET Framework やら、いろんなところに飛び火しちゃって、検出ツールなんて作らないといけなくなっちゃった、というわけで、ユーザにとっても面倒くさいことこの上ない。

*1:ラスターオペレーションも残してほしかったが

*2:.NET Framework の System.Drawing 下のメソッドも、多くは GDI+ の呼び出しラッパーでしかないので、同様に System.NotImplemntException が発生する