Buffer overrun c/c++

Pubblicità

luca_cpp

Nuovo Utente
Messaggi
2
Reazioni
0
Come faccio ad individuare gli indici troppo grandi nei vettori in c/cpp?

Per esempio:

int y[10][3][6];

...
y[5][4][5] = 33;ù
...

Il secondo indice non è valido, ma come faccio ad individuarlo?
I compilatori non segnalano nulla e durante il funzionamento và tutto avanti o addirittura il programma si pianta
 
In base a dove vengono presi i vari indici li salvi in variabili, li confrnonti se minori di... , e in quel caso associ il numero alla posizione.
 
int y[10][3][6];

questo è un esempio di non buona programmazione.

se devi leggere il codice tra qualche mese ti ricorderai mai cosa sono 10 3 e 6?

per questo occorre costantizzare ovvero definire delle costanti del tipo

#DEFINE max_x = 10
#DEFINE max_y = 3
#DEFINE max_z = 6

se ad esmepio i 3 valori indicano ilmassimo di 3 coordinate spaziali.

adesso il codice viene da se.. basta controllare come diceva giustamente l'autore del commento precedente se l'indice è compreso nei bounds (vincoli, limiti) definiti sopra altrimenti si va incontro all'array out of bounds exception che in alcuni linguaggi può causare seri danni.

Saluti,
Ulisse @ Hacking Group Como.
 
Ciao a tutti,
in questi giorni ho navigato su internet in cerca di qualche soluzione al mio problema.

Sono riuscito a trovare il Bugfighter scaricabile da www.bugfighter-soft.com.

E' un programma che consente di individuare i buffer overflow di ogni tipo: sia di vettori monodimensionali sia di vettori multidimensionale e anche di quelli contenuti nelle struct.

E' indipendente dal compilatore e dal sistema operativo.
L'ho provato con il Visual C++ e funziona.

Voi lo usate già e con quali compilatori?

Grazie

Ciao
 
Pubblicità
Pubblicità

Discussioni Simili

Indietro
Top