En buffertöverskridning , eller buffer overflow , är ett problem där ett datorprogram skriver mer data till en buffert än har anslagits för denna buffert . Som ett resultat skrivs data till en intilliggande del av minnet , kanske skriva över andra data. Detta kan leda till att program för att agera oförutsägbart och kan orsaka den att krascha . Den kan också utnyttjas för att utlösa driften av ett skadligt program. Som sådan , är det alltid klokt att undvika buffertspill i ett program . Saker du behöver
Källkod innehållande buffert Compiler overflow
för språket i denna källkod
Visa fler instruktioner
1
Begränsa din sökning . Du kan göra detta genom att skriva ut debug information och genom att förhindra delar av programmet från att köras . Buffertspill kan vara svåra att spåra eftersom bevisen är inte alltid konsekvent . Men om den bevisning som ni har försvinner när en del av programmet hindras från att köra , är det en bra indikation på problemet är med den delen .
2
Läs källkoden . När du har tillräckligt minskat din sökning , titta igenom källkoden för något som potentiellt kan orsaka ett överflöd . Ibland är det i en slinga som skriver bortom längden av en array. Ibland är det en sammansättning av strängar till en sträng större än bufferten anslagits för den raden . Addera 3
Fixa felet . Om problemet var att skriva förbi en arrays gränser , se vad orsakade det fungerar korrekt , eller att uppsättningen är rätt storlek ändras vid behov . Se till att alla sträng buffertar är stor nog att rymma de strängar de kan hålla .
4
vidta förebyggande åtgärder . Använd bounds - kontrollfunktioner för att garantera att minnet är aldrig över. Dynamiskt ändra storlek arrayer som nödvändigt. Håll noga koll på alla potentiella minne skriver att de aldrig skriver till fel område av minne .