Oppure

Loading
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
14/07/09 22:09
luca_c
Salve,
in questi giorni ho fatto una ricerca su internet sull'esistenza di qualche tool/compilatore in grado di aiutarmi nella ricerca del buffer overflow.

Sono riuscito a trovare un tool che risolve questo problema.
In più è indipendente dal compilatore che si stà usando e dal sistema operativo, in quanto è un semplice parser che converte il codice C/C++ in un nuovo codice C/C++ ricompilabile.
bugfighter-soft.com/images/…

L'ho provato ed in effetti rileva quello che promette, ho usato il Visual C++ Express per effettuare delle prove. I risultati sono stati buoni.

Il nome è BugFighter e lo si può scaricare dal sito bugfighter-soft.com

Voi l'avete provato?

Cosa ne sapete in proposito?

Grazie

aaa