02/07/09 21:05
luca_c
Buongiorno a tutti,
vorrei chiedervi come individuare negli array del C/C++ il buffer overflow.
Per esempio:
char c[8];
int x[5][6][10];
c[20] = 'z';
x[4][7][4] = 11;
Esiste un metodo o un programma, compilatore per effettuare tale controllo facilmente.
(Inserisco questa domanda sia nel forum del C sia del C++)
Grazie
aaa
02/07/09 21:17
theprogrammer
Non so se ti riferisci al run-time o al compile-time.
Alcuni compilatori hanno specifiche opzioni per individuare quelli a compile-time.
Quelli a run-time possono essere individuati se si usano specifiche librerie (debug).
Ma le librerie di release non hanno codice per l'individuazione dei bo a run-time.
aaa
03/07/09 20:44
luca_c
In effetti mi chiedevo proprio questo.
Per esempio:
int ii;
char x[10];
...
ii = rand();
x[ii] = 8;
In questo caso non posso in fase di compilazione individuare l'errore, ma come faccio in fase di run-time?
Esiste qualche compilatore che risolve questo problema?
Grazie
aaa
03/07/09 20:53
theprogrammer
Te l'ho gia' detto ... a runtime lo puoi fare solo se compili usando librerie apposite (librerie di debug) che effettuano questo tipo di controlli (ovviamente non sono disponibili con tutti i compilatori).
Pero', quando rilasci l'eseguibile definitivo, devi usare le librerie "normali" che non fanno questi controlli dato che si possono rivelare piuttosto "pesanti" a runtime.
L'unico modo e' fare attenzione scrivendo codice "sicuro".
aaa