Buffer overrun c/c++

luca_cpp

Nuovo Utente
2
0
CPU
pentium
Scheda Madre
asus
HDD
1000gb
RAM
1000mb
GPU
matrox
Audio
genius
Monitor
acer
PSU
200
Case
no
OS
windows
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
 

ypkdani

Utente Èlite
1,511
39
CPU
Intel Quad 6600
Scheda Madre
Asus P5ql/epu
HDD
500GB
RAM
2gb Geil Ultra 6400
GPU
Hd2600xt 512mb
Monitor
Acer
PSU
600w
OS
Windows 7 Pro x64
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.
 

UlisseHGC

Utente Attivo
23
0
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.
 

luca_cpp

Nuovo Utente
2
0
CPU
pentium
Scheda Madre
asus
HDD
1000gb
RAM
1000mb
GPU
matrox
Audio
genius
Monitor
acer
PSU
200
Case
no
OS
windows
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
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili