หลังจากที่เมื่อเช้านี้ Apple ได้ปล่อยอัพเดต iOS 7.0.6 ออกมาเพื่อแก้ไขปัญหาช่องโหว่การตรวจสอบ SSL แต่ไม่ได้ลงรายละเอียดอะไรมากกว่านั้น นักวิจัยด้านความมั่นคงปลอดภัยหลายรายก็เลยพยายามที่จะวิเคราะห์ว่าปัญหาของช่องโหว่นี้เกิดจากอะไร และมีผลกระทบมากน้อยแค่ไหน
จนในที่สุดก็มีคนไปไล่ดูซอร์สโค้ดของฟังก์ชันที่ใช้แลกเปลี่ยนกุญแจ SSL เลยพบว่า สาเหตุของปัญหานี้เกิดจากการที่ Apple ใส่คำสั่ง goto fail; เกินมา 1 บรรทัด เลยทำให้ระบบไม่ตรวจสอบค่า hostname ที่ผิดพลาดในใบรับรอง SSL
อย่างไรก็ตาม ถึงแม้ว่าทาง Apple จะแก้ไขปัญหาช่องโหว่นี้ไปแล้วใน iOS 7.0.6 แต่ก็มีคนไปพบว่า Safari และฟังก์ชัน cURL ใน OS X 10.9.1 ก็มีช่องโหว่แบบเดียวกัน แต่ปัจจุบันยังไม่มีแพตช์ออกมาแก้ไข
ที่มา - ImperialViolet, Hacker News, Neowin
Comments
แพทช์ -> แพตช์
แก้แล้วครับ ขอบคุณครับ
เรื่องแบบนี้คงไม่มีใครที่ไม่เคยพลาด -_-
บล็อก: wannaphong.com และ Python 3
จาก diff ที่มีคนใน Hacker News มาแปะไว้
บรรทัดที่ 631 สงสัยพลาดตอน merge
โปรแกรม merge พลาดต้องชะตาขาด ณ บัดนี้
นึกว่า Ctrl + v รัวเกินไปหนึ่งครั้ง
If you fail, you fail twice. - คนเขียนโค้ดไม่ได้กล่าวไว้
Dream high, work hard.
ใช้ goto นี่มันฆ่าตัวตายชัดๆ effective c++ ถึงกับสั่งห้ามใช้เลยทีเดียว
แต่ Objective-C ไม่ได้ห้ามไว้
ขอความรู้นิดครับ พอดีไม่ได้เขัยน C ไม่ทราบว่าทำไมคำสั่งนี้ถึงน่ากลัวครับ
เกี่ยวกับการ JUMP ไปตำแหน่งของ Address ของ ROM, RAM หรือ Storage อื่นๆ หรือเปล่าครับ ถ้า Source code ถูก compile จะได้ภาษาในระดับต่ำกว่าลงไป ถ้าเป็น Assembly มาแกะกลับ สามารถทำให้มันกระโดดข้ามขั้นตอนเช่นยืนยันตัวตนก่อนเปิดโปรแกรมที่ถูก compile แล้วได้เลย อันนี้ข้อสันนิษฐานของผม
ถ้าเป็นแนวทางการเขียนโปรแกรมโดยทั่วไป การใช้ GOTO ทำให้เสีย "โครงสร้าง" โปรแกรมครับ กระบวนการวิเคราะห์ว่าโปรแกรมอยู่ในสถานะใดจะยากขึ้นอีกมาก ขณะที่การใช้ if-else-loop ไปเรื่อยๆ เราดูได้เสมอว่าโปรแกรมจะรันโค้ดบรรทัดไหนได้สถานะแบบไหน
lewcpe.com, @wasonliw
+1
หลายครั้งก็พลาดกันง่ายๆ แบบนี้
+1
ขอบคุณมากครับ :)
xkcd: goto
เหมือนเคยอ่านเจอว่า ท้ายที่สุดแล้ว ลูป หรือ goto จะถูก compile ไปเป็น jump
ดังนั้นในกรณีที่อยาก optimize มากๆ และ ไม่อยากให้ compiler มานั่ง optimize อีกต่อ เพราะมี nested หลายๆชั้น จนมึน
ในระดับ OS เลยมีใช้ goto อยู่บ้าง แต่ก็มักกระโดดกันแค่ในฟังก์ชันเดียวกัน
เท่าที่เคยอ่าน code พวก compiler ที่เขียนด้วย C ก็เห็นใช้ goto กันบ่อยๆ คือ goto error แล้วให้โปรแกรมตายฮะ ก็ถือว่ายอมรับได้นะเพราะ C มันไม่มี throw exception
ว่าแต่เมื่อไหร่ไอ้สไตล์การเขียน code แบบ if / for กับ statement เดียวแล้วยอมไม่มีวงเล็บปีกกามันจะหมดไปซักที ไม่ได้เขียน python นะยอมเปลืองหน่อยก็ได้ :/
+1 ย่อหน้าสุดท้าย orz
บางทีมีย่อเหลือ condition ? true: false; อีก
cond ? on_true : on_false;
ผมสนับสนุนนะ เพราะมันบังคับอยู่แล้วว่าon_true
กับon_false
ต้องเป็น expression เดี่ยวๆ (ยังไม่เป็น statement ด้วยซ้ำ) ลองดูอย่างเทียบกับ