I motsetning til andre språk , C og C + + ikke sjekke størrelsen på innspill før du skriver det inn i en buffer . Hvis inngangen er større enn den tilordnede plassen i bufferen , inndataene skrevet over andre data i programmet stabelen. I tillegg til å forårsake at programmet skal oppføre seg uberegnelig , kan buffer overflow mulig for en angriper å krasje programmet , få tilgang til private data eller ta kontroll over en maskin. Unngå utrygge C + + funksjoner er ett av trinnene for å forebygge bufferoverflyter i programmet. Strengfunksjoner
Usikre funksjoner som håndterer strenger inkluderer strcpy ( ) , strcat ( ) , sprintf ( ) , vsprintf ( ) , og får ( ) . Disse funksjonene utføre operasjoner på strengvariabler , lagret som matriser av tegn i C + + . Funksjonene lese en streng fra en kilde - som brukerundersøkelser - kopier, eller sette sammen en streng for å danne en ny streng . Hvis du ikke sjekke størrelsen på den nye strengen før du skriver det inn i minnet , kan det føre til en buffer overflow .
Scanning Funksjoner
Usikre fil skanning funksjoner inkluderer scanf ( ) , fscanf ( ) , sscanf ( ) , vscanf ( ) vsscanf () og vfscanf ( ) . Skannefunksjoner lese data fra brukerundersøkelser, en fil eller andre kilder, og skrive den til en formatert streng. Hvis det skannede data er større enn plassen avsatt til formatereren streng, vil en buffer overflow oppstår.
Microsoft funksjoner
Usikre funksjoner i Microsofts biblioteker inkluderer wcscpy ( ) , _tcscpy ( ) , _mbscpy ( ) , wcscat ( ) , _tcscat ( ) , _mbscat () og CopyMemory ( ) . Disse funksjonene er i hovedsak kopiere og sette sammen funksjoner som bruker Microsoft - spesifikke objekter , snarere enn strenger eller fildata .
Andre funksjoner
Andre usikre C + + funksjoner inkluderer realpath ( ) , getopt ( ) , getpass ( ) , streadd ( ) , strecpy () og strtrns ( ) .