A bufferoverløb eller buffer overflow , er et problem, hvor et edb-program skriver flere data til en buffer end det har været afsat for denne buffer. Som følge heraf er skrives data til en tilstødende del af hukommelsen , potentielt overskrive andre data. Dette kan medføre, at programmet til at handle ujævnt , potentielt får det til at gå ned. Det kan også udnyttes til at udløse driften af et ondsindet program . Som sådan er det altid tilrådeligt at undgå bufferoverløb i et program . Ting du skal
Kildekode indeholdende buffer overflow
Compiler for sproget i denne kildekode
Vis Flere Instruktioner
1
indsnævre din søgning . Du kan gøre dette ved at udskrive debug information og ved at forhindre dele af programmet i at køre. Bufferoverløb kan være svært at opspore fordi beviserne ikke altid er konsekvent. Men hvis de beviser, du har forsvinder, når en del af programmet er forhindret i at køre , er det en god indikation af problemet er med den del .
2
Læs kildekoden. Når du har tilstrækkeligt indsnævret din søgning, kigge gennem kildekoden til noget, der kan potentielt forårsage et overløb . Undertiden er det i en løkke, der skriver ud over længden af et array . Nogle gange er det er en sammenkædning af strenge til en streng større end buffer afsat til denne streng .
3
Fastgør fejl. Hvis problemet var at skrive forbi en array- bounds, sørg uanset forårsaget , der kører ordentligt , eller at den vifte korrekt skaleres efter behov. Sørg for at alle string buffere er store nok til at holde strengene , de må have.
4
Tag forebyggende foranstaltninger . Brug bounds - kontrol funktioner, så som at sikre, at hukommelsen er aldrig overskrives. Dynamisk resize arrays som nødvendigt . Hold nøje øje med alle potentielle hukommelse skriver at sikre, at de aldrig skriver til den forkerte område af hukommelsen .