Vi presenterar ett system, RCV, för att göra det möjligt för programvara att överleva split-by-noll och noll-dereferensfel. RCV arbetar direkt på off-the-shälf, produktion, strippade x86 binära körbara. RCV implementerar recovery Shepherding, som fäster vid applikationsprocessen när ett fel uppstår, reparerar utförandet, spårar reparationseffekterna som utförandet fortsätter, innehåller reparationseffekterna i applikationsprocessen, och lossar från processen efter alla reparationseffekter spolas från processtillståndet. RCV har därför försumbara omkostnader under det normala genomförandet av ansökan. Vi utvärderar RCV på alla splitter-by-noll och null-dereferensfel som finns i CVE-databasen [2] från januari 2011 till mars 2013 som 1) tillhandahåller offentligt tillgängliga indata som utlöser det fel som 2) vi kunde använda för att utlösa det rapporterade felet i vår experimentella miljö. Vi samlade totalt 18 fel i sju riktiga applikationer, Wireshark, FreeType-biblioteket, Claws Mail, LibreOffice, GIMP, PHP-tolken och Chromium. För 17 av de 18 fel, RCV gör det möjligt för programmet att fortsätta att köra för att ge godtagbar utgång och service till sina användare på felutlösande ingångar. För 13 av de 18 fel, den fortsatta RCV utförande så småningom spolar alla reparationseffekter och RCV detaches för att återställa programmet till full ren funktionalitet. Vi gör en manuell analys av källkoden som är relevant för våra referensfel, vilket indikerar att för 11 av de 18 felen ger RCV och senare lappade versioner identiska eller likvärdiga resultat på alla ingångar.
RCV REF gör det möjligt för applikationer att överleva null dereferens och dividera med noll fel.
Automatic runtime error repair and containment via recovery shepherding
{'venue': "PLDI '14", 'journal': None, 'mag_field_of_study': ['Computer Science']}