AprĂšs trois ans de dĂ©veloppement, la version 1.7 de l'outil GNU cflow a Ă©tĂ© publiĂ©e, visant Ă crĂ©er un graphique visuel des appels de fonctions dans les programmes en langage C, qui peut ĂȘtre utilisĂ© pour faciliter la comprĂ©hension de la logique d'une application. Le graphique est construit uniquement sur la base de l'analyse des codes sources, sans nĂ©cessiter d'exĂ©cution du programme. La gĂ©nĂ©ration de graphiques directs et inverses des flux d'exĂ©cution est prise en charge, ainsi que la gĂ©nĂ©ration de listes de rĂ©fĂ©rences croisĂ©es pour les fichiers de code.
Cette version se distingue par l'implĂ©mentation du support du format de sortie «dot» (ââformat=dotâ) pour produire des rĂ©sultats au format DOT pour une visualisation ultĂ©rieure dans le paquet Graphviz. La possibilitĂ© de spĂ©cifier plusieurs fonctions de dĂ©part en dupliquant les options ââmainâ a Ă©tĂ© ajoutĂ©e ; un graphique distinct sera gĂ©nĂ©rĂ© pour chacune de ces fonctions. De plus, une option «âtarget=FUNCTION» a Ă©tĂ© introduite, permettant de restreindre le graphique rĂ©sultant uniquement Ă la branche incluant certaines fonctions (l'option «âtarget» peut ĂȘtre spĂ©cifiĂ©e plusieurs fois). Dans le mode cflow, de nouvelles commandes ont Ă©tĂ© ajoutĂ©es pour naviguer dans le graphique : «c» â aller Ă la fonction appelante, «n» â aller Ă la fonction suivante au mĂȘme niveau d'imbrication et «p» â aller Ă la fonction prĂ©cĂ©dente au mĂȘme niveau d'imbrication.
Dans la nouvelle version, deux vulnĂ©rabilitĂ©s rĂ©vĂ©lĂ©es en 2019, entraĂźnant des corruptions de mĂ©moire lors du traitement de codes sources spĂ©cialement formatĂ©s dans cflow, ont Ă©galement Ă©tĂ© corrigĂ©es. La premiĂšre vulnĂ©rabilitĂ© (CVE-2019-16165) est causĂ©e par un accĂšs Ă la mĂ©moire aprĂšs sa libĂ©ration (use-after-free) dans le code du parseur (fonction reference dans parser.c). La deuxiĂšme vulnĂ©rabilitĂ© (CVE-2019-16166) est liĂ©e Ă un dĂ©passement de tampon dans la fonction nexttoken(). Selon les dĂ©veloppeurs, ces problĂšmes ne reprĂ©sentent pas une menace pour la sĂ©curitĂ©, car ils se limitent Ă un arrĂȘt anormal de l'outil.
Source : opennet.ru
