Έκδοση του βοηθητικού προγράμματος GNU cflow 1.7

Μετά από τρία χρόνια ανάπτυξης, κυκλοφόρησε το βοηθητικό πρόγραμμα GNU cflow 1.7, σχεδιασμένο για τη δημιουργία ενός οπτικού γραφήματος των κλήσεων συναρτήσεων σε προγράμματα C, το οποίο μπορεί να χρησιμοποιηθεί για να απλοποιήσει τη μελέτη της λογικής της εφαρμογής. Το γράφημα κατασκευάζεται μόνο με βάση την ανάλυση των κειμένων πηγής, χωρίς την ανάγκη εκτέλεσης του προγράμματος. Υποστηρίζεται η δημιουργία γραφημάτων ροής τόσο προς τα εμπρός όσο και αντίστροφης εκτέλεσης, καθώς και η δημιουργία λιστών παραπομπών για αρχεία κώδικα.

Η έκδοση είναι αξιοσημείωτη για την εφαρμογή υποστήριξης για τη μορφή εξόδου "dot" ('—format=dot') για τη δημιουργία του αποτελέσματος στη γλώσσα DOT για επακόλουθη απεικόνιση στο πακέτο Graphviz. Προστέθηκε η δυνατότητα καθορισμού πολλαπλών συναρτήσεων εκκίνησης με αντιγραφή των επιλογών '—κύρια'· θα δημιουργηθεί ένα ξεχωριστό γράφημα για καθεμία από αυτές τις συναρτήσεις. Προστέθηκε επίσης η επιλογή «--target=FUNCTION», η οποία σας επιτρέπει να περιορίσετε το γράφημα που προκύπτει μόνο στον κλάδο που περιλαμβάνει ορισμένες συναρτήσεις (η επιλογή «--target» μπορεί να καθοριστεί πολλές φορές). Νέες εντολές για πλοήγηση γραφήματος έχουν προστεθεί στη λειτουργία cflow: "c" - μετάβαση στη συνάρτηση κλήσης, "n" - μετάβαση στην επόμενη συνάρτηση σε ένα δεδομένο επίπεδο ένθεσης και "p" - μετάβαση στην προηγούμενη συνάρτηση με το ίδιο επίπεδο φωλιάς.

Η νέα έκδοση εξαλείφει επίσης δύο ευπάθειες που εντοπίστηκαν το 2019 και οδηγούν σε καταστροφή της μνήμης κατά την επεξεργασία ειδικά διαμορφωμένων κειμένων πηγής στο cflow. Η πρώτη ευπάθεια (CVE-2019-16165) προκαλείται από μια πρόσβαση στη μνήμη μετά τη χρήση στον κώδικα ανάλυσης (συνάρτηση αναφοράς στο parser.c). Η δεύτερη ευπάθεια (CVE-2019-16166) σχετίζεται με υπερχείλιση buffer στη συνάρτηση nexttoken(). Σύμφωνα με τους προγραμματιστές, αυτά τα προβλήματα δεν αποτελούν απειλή για την ασφάλεια, καθώς περιορίζονται στον ανώμαλο τερματισμό του βοηθητικού προγράμματος.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο