Java SEのセキュリティ勧告: 浮動小数点数への変換の際に無限ループに陥る可能性
Java SEについて、セキュリティ勧告「CVE-2010-4476」がリリースされています。
http://blogs.oracle.com/security/2011/02/security_alert_for_cve-2010-44.html
"2.2250738585072012e-308"という文字列をDouble.parseDouble()などでdouble型に変換しようとした場合に、無限ループに陥ってハングアップするという内容です。あるいは、「double d = 2.2250738585072012e-308;
」を含むコードをコンパイルしようとした場合にも発生し、コンパイルが終了しなくなります。先日PHPでも同様の勧告が出ており、Javaでも発生することが報告されていましたが、正式に勧告になったようです。
サンプルコードは以下で公開されています。簡単すぎる。
Java Hangs When Converting 2.2250738585072012e-308 - Exploring Binary
2月15日にリリースされる予定のJRE 6 Update 24で修正されるとのことです。または、FPUpdater Toolを使うことで修正できるそうです。