Pieter Edelman
30 June 2015

Het MIT claimt een methode gevonden te hebben om softwarebugs automatisch op te lossen door functionaliteit over te nemen uit een ander programma dat de situatie wel goed afhandelt. De Codephage-tooling extraheert de essentie van een controle uit de binary van het donorprogramma en zet deze om naar een broncode-patch voor de ontvanger.

De onderzoekers gaan in hun werk uit van het scenario dat een specifieke input een applicatie doet crashen, terwijl een andere toepassing deze goed afhandelt. Als voorbeeld toonden ze op de ACM Programming Language Design and Implementation-conferentie twee foto-viewers en een tiff-bestand dat verkeerde afmetingen voorschrijft. De ene applicatie gaat onderuit, de andere voert een controle uit en weigert verdere verwerking.

Van deze laatste maakt de Codephage-tool eerst een nauwgezette instructie-trace van elke conditionele vertakking en bewerking bij de weergave van een correct bestand. Vervolgens wordt de stap herhaald voor het foutieve bestand. Aan de hand hiervan worden mogelijke oplossingen voor de bug opgesteld. Die worden omgezet in een symbolische expressie.

Vervolgens wordt in het ontvanger-programma gezocht naar variabelennamen voor de relevante bytes in het donorprogramma. De symbolische expressie wordt hiermee volautomatisch omgezet in een patch en op de juiste plek toegevoegd. Codephage gaat op die manier net zo lang kandidaat-oplossingen af totdat het programma niet meer crasht op de foutieve input.

 advertorial 

Sigasi Extension for Visual Studio Code

Sigasi announces the release of their VS Code Extension with rich support for SystemVerilog, Verilog, and VHDL. Our extension provides features and language support such as code navigation, project management, linting, code formatting, tooltips, outline, autocomplete, hover, and much more!

De onderzoekers probeerden hun methode uit op zeven opensource-applicaties waar ze eerder bugs in hadden gevonden. Codephage kon de problemen in alle gevallen in maximaal tien minuten oplossen.