หลังจากสามปีของการพัฒนา ประกาศเปิดตัวยูทิลิตี้ GNU cflow 1.7 เวอร์ชันใหม่ สำหรับผู้ที่ไม่ทราบอรรถประโยชน์นี้ควรรู้ว่ามันคือ ออกแบบมาเพื่อสร้างกราฟภาพของการเรียกใช้ฟังก์ชันในโปรแกรม Cซึ่งสามารถใช้เพื่อทำให้การศึกษาตรรกะของแอปพลิเคชันง่ายขึ้น
สถิติหรือสร้างขึ้นจากการวิเคราะห์ตำราเท่านั้นโดยไม่ต้องรันโปรแกรม แถมยังรองรับการสร้างโฟลว์กราฟไปข้างหน้าและย้อนกลับ เช่นเดียวกับการสร้างรายการอ้างอิงโยงสำหรับไฟล์ที่มีโค้ด
แพ็คเกจทำงานได้อย่างสมบูรณ์และคอมไพล์และรันบนการกระจาย GNU/Linux ใดๆ และบนระบบที่เหมือน UNIX ที่ใหม่กว่า รองรับคำสั่งสวิตช์บรรทัดทั้งหมดที่ POSIX ต้องการ สามารถผลิตเอาต์พุตได้สองรูปแบบ: รูปแบบ GNU cflow (ซึ่งเป็นค่าเริ่มต้น) และรูปแบบ POSIX
ปัจจุบัน ยูทิลิตีสามารถประมวลผลแบบอักษร C ได้เท่านั้น เนื่องจากเป็นค่าเบี่ยงเบนเดียวจากข้อกำหนดของ POSIX ซึ่งต้องการความสามารถในการประมวลผลแบบอักษร YACC และ LEX รวมถึงไฟล์อ็อบเจ็กต์ไบนารี
โมดูล cflow-mode.el Emacs ทำงานร่วมกับไฟล์ในรูปแบบ GNU cflow (ซึ่งต่างจากรูปแบบ POSIX) และได้รับการทดสอบกับ Emacs 24.2.1 แล้ว
คุณสมบัติใหม่หลักของ GNU cflow 1.7
ในเวอร์ชันออกใหม่นี้ โดดเด่นในด้านการสนับสนุนรูปแบบเอาต์พุต "จุด" ('–format=dot') เพื่อสร้างผลลัพธ์ DOT สำหรับการประมวลผลเพิ่มเติมในแพ็คเกจ Graphviz
นอกจากนี้ยังมีการเน้นย้ำว่า เพิ่มความสามารถในการระบุฟังก์ชันเริ่มต้นหลายรายการโดยทำซ้ำตัวเลือก '–main' ซึ่งจะถูกสร้างขึ้นด้วยกราฟแยกกันสำหรับแต่ละฟังก์ชันเหล่านี้
นอกจากนี้ยังตั้งข้อสังเกตว่ามีการเพิ่มตัวเลือก "–target=FUNCTION" เพื่อจำกัดกราฟผลลัพธ์ให้เหลือเพียงสาขาเดียว ซึ่งรวมถึงฟังก์ชันบางอย่าง (ตัวเลือก “–target” สามารถระบุได้หลายครั้ง)
การเปลี่ยนแปลงอีกอย่างที่รวมอยู่ใน GNU cflow 1.7 เวอร์ชันใหม่นี้คือ เพิ่มคำสั่งใหม่สำหรับการนำทางแผนภูมิ cflow-mode:”c” ซึ่งใช้ไปยังฟังก์ชันการเรียก “n” ซึ่งใช้ไปยังฟังก์ชันถัดไปในระดับการซ้อนนี้ และ “p” เพื่อไปยังฟังก์ชันก่อนหน้าที่มีระดับการซ้อนเท่ากัน .
ในทางกลับกัน ยังมีการกล่าวถึงในประกาศของ GNU cflow 1.7 เวอร์ชันใหม่นี้อีกด้วย สองช่องโหว่ถูกลบออก ที่ระบุในปี 2019 ทำให้หน่วยความจำเสียหายเมื่อประมวลผลข้อความต้นฉบับที่สร้างขึ้นเป็นพิเศษใน cflow
จากช่องโหว่ที่ได้รับการแก้ไขแล้ว มีการกล่าวถึงสิ่งต่อไปนี้:
- ช่องโหว่แรก (CVE-2019-16165) เกิดขึ้นเมื่อมีการเข้าถึงหน่วยความจำหลังจากว่าง (หลังใช้งานฟรี) ในโค้ดแยกวิเคราะห์ (ฟังก์ชันอ้างอิงใน parser.c)
- ช่องโหว่ที่สอง (CVE-2019-16166) เกี่ยวข้องกับบัฟเฟอร์ล้นในฟังก์ชัน nexttoken() ในความเห็นของนักพัฒนา ปัญหาเหล่านี้ไม่ได้แสดงถึงภัยคุกคามด้านความปลอดภัย เนื่องจากปัญหาเหล่านี้จำกัดอยู่ที่การยุติยูทิลิตี้อย่างผิดปกติ
ในที่สุด หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติม เกี่ยวกับเวอร์ชันใหม่นี้คุณสามารถตรวจสอบรายละเอียดได้ใน ลิงค์ต่อไปนี้
จะติดตั้ง cflow บน Linux ได้อย่างไร?
สำหรับผู้ที่สนใจจะสามารถติดตั้งยูทิลิตี้นี้บนระบบของพวกเขา พวกเขาควรรู้ว่า cflow อยู่ในที่เก็บของลีนุกซ์รุ่นหลักบางรุ่น ฉันต้องพูดถึงว่าเวอร์ชันใหม่ยังไม่ได้รับการใช้งานในบางรุ่น แต่จะพร้อมใช้งานในอีกไม่กี่วัน
ในกรณีของผู้ที่เป็นผู้ใช้ Debian, Ubuntu หรืออนุพันธ์ของสิ่งเหล่านี้ สามารถติดตั้งจากเทอร์มินัลโดยพิมพ์คำสั่งต่อไปนี้:
sudo apt install cflow -y
ในกรณีของผู้ใช้ Arch Linux, Manjaro หรือการแจกจ่ายอื่น ๆ ที่ได้รับจากสิ่งเหล่านี้ การติดตั้งต้องทำจากที่เก็บ AUR:
yay -s cflow
ส่วนผู้ที่สนใจจะคอมไพล์เวอร์ชั่นใหม่สามารถหาได้จาก ลิงค์ต่อไปนี้