A bufferoverløpet , eller buffer overflow , er et problem der et dataprogram skriver mer data til en buffer enn det som er avsatt til at buffer . Som et resultat blir data skrevet til en tilstøtende del av minnet , som potensielt kan overskrive andre data . Dette kan føre til at programmet til å handle uberegnelig , potensielt forårsaker den til å krasje. Det kan også utnyttes til å utløse driften av et ondsinnet program . Som sådan , er det alltid lurt å unngå bufferoverflyter i et program . Du trenger
Kildekode som inneholder buffer overflow
Compiler for språket i denne kildekoden
Vis flere instruksjoner
en
Begrens ditt søk . Du kan gjøre dette ved å skrive ut debug informasjon og ved å hindre deler av programmet fra å kjøre. Buffer overflow kan være vanskelig å spore opp fordi bevisene er ikke alltid konsekvent . Men hvis bevisene du har forsvinner når en del av programmet er forhindret fra å kjøre , er det en god indikasjon på problemet er med den delen .
2
Les kildekoden . Når du har tilstrekkelig snevret søket, se gjennom kildekoden for noe som potensielt kan føre til en overflod. Noen ganger er det i en sløyfe som skriver utover lengden av en matrise . Noen ganger er det en sammensetning av strenger til en streng større enn buffer avsatt til strengen.
3
Fest feil. Hvis problemet var å skrive forbi en tabellens grenser , sørg for hva som forårsaket den går som den skal, eller at matrisen er riktig skaleres etter behov. Kontroller at alle string buffere er store nok til å holde i trådene de kan holde .
4
Ta forebyggende tiltak. Bruk intervallkontroll funksjoner slik som å garantere at minnet er aldri overskrevet . Dynamisk endre størrelsen arrays som nødvendig. Hold forsiktig oversikt over alle potensielle minne skriver for å sikre at de aldri skrive til feil område av minnet .