A differenza di altri linguaggi , C e C + + non selezionare la dimensione di ingresso prima di scrivere in un buffer . Se l'ingresso è maggiore dello spazio allocato nel buffer , l'ingresso viene scritta su altri dati nella pila programma . Oltre a causare il vostro programma a comportarsi in modo anomalo , i buffer overflow può consentire a un hacker di crash il programma , accedere ai dati privati o anche prendere il controllo di una macchina . Evitando pericolosi funzioni C + + è uno dei passi per prevenire i buffer overflow nel programma. Funzioni stringa
funzioni non sicure che gestiscono stringhe includono strcpy ( ) , strcat ( ) , sprintf ( ) , vsprintf ( ) , e ottiene ( ) . Queste funzioni eseguono operazioni su variabili stringa memorizzata come array di caratteri in C + + . Le funzioni di leggere una stringa da una fonte - come ad esempio l'input dell'utente - copia , o concatenare una stringa per formare una nuova stringa . Se non si seleziona la dimensione della nuova stringa prima di scrivere in memoria , può causare un buffer overflow .
Funzioni di scansione
funzioni di scansione di file non sicuri
includono scanf ( ) , fscanf ( ) , sscanf ( ) , vscanf ( ) vsscanf ( ) e vfscanf ( ) . Funzioni di scansione leggere i dati da input dell'utente , un file o altri fonti e scrivere in una stringa formattata . Se i dati di scansione è maggiore dello spazio allocato per la stringa di formattazione , si verifica un overflow del buffer .