Tags:

ออราเคิลออกประกาศ Security Alert for CVE-2010-4476 พร้อมโปรแกรมแก้ไขบัก ซึ่งเป็นบักในส่วนการแปลงข้อความตัวอักษรเลขฐาน 10 ไปเป็นเลขฐาน 2 จำนวนจริงแบบความละเอียดสองเท่า (double-precision binary floating-point) ที่เมื่อเจอเลข 2.2250738585072012e-308 จะวนติดอยู่ในลูปและไม่สามารถทำงานคำสั่งถัดไปได้

บักนี้ร้ายขนาดไหน? ยกตัวอย่างง่ายๆ ก็ทำให้โปรแกรมอย่าง "javac" ค้างได้ รายละเอียดลองอ่าน "Java Hangs When Converting 2.2250738585072012e-308" ดู

Comments

By: mr_tawan
ContributoriPhoneAndroidWindows
mr_tawan's blog
on 09/02/11 15:42 #257579 toggle
mr_tawan's picture

ผมคิดว่าถ้ามีตัวอย่างโค๊ดที่เคยเป็นปัญหาด้วย น่าจะทำให้อ่านเข้าใจง่ายขึ้นนะครับ (ตอนแรกงงตรงการแปลงตัวอักษรเป็นทศนิยมลอยตัว หรืออะไรสักอย่างนี่ล่ะ :P) คิดว่าไม่น่าจะใช้พื้นที่มากนะ


By: e.p.
ContributorAndroid
e.p.'s blog
on 09/02/11 15:46 #257581 Reply to:257579 toggle
e.p.'s picture

ตรง Java Hangs When Converting... นั่นมีตัวอย่างครับ แต่ไม่กล้าเอามาใส่ เพราะจะเรียกว่า "เคยเป็นปัญหา" ก็ยังได้ไม่เต็มปาก เชื่อว่าเกินครึ่งโลกตอนนี้ยังไม่ได้ patch ครับ เลยไม่อยากใส่ให้เห็นชัดเกินไปนัก

By: tekkasit
ContributorAndroidWindowsIn Love
tekkasit's blog
on 09/02/11 17:03 #257598 toggle
tekkasit's picture

คือบั๊กมันง่ายแต่ได้ผลมาก เพราะ parseDouble ด้วย แถมเดี๋ยวนี้อาจจะไม่ใช้การแปลงตรงๆ แต่ข้างใต้เฟรมเวิร์กทั่วไปก็ใช้ BeanUtils หรือตัวแปลงค่าอื่นๆแปลงค่าฟอร์มที่ผู้ใช้กรอกลง Object กันเยอะนะครับ

แบบนี้สงสัยอาจจะมีผลกระทบมากกว่าที่คิดนะ thread มันไม่จบเสียที โดนเยอะๆก็ดาว์นได้ล่ะ

By: nat3738
AndroidRed HatUbuntuWindows
nat3738's blog
on 09/02/11 20:46 #257635 toggle
nat3738's picture

บักตัวเดียวกับใน PHP สินะ แต่ทางโน้นแก้ไปเป็นเดือนแล้วนะ

By: nextman13
Ubuntu
nextman13's blog
on 09/02/11 22:47 #257679 toggle
nextman13's picture

oracle ทำดีแล้วครับ


This is a pen.