Bonjour à tous,
Je cherche à savoir s'il existe des méthodes pour détecter les buffers overflows/overrun en C ?
Je m'explique : voilà un code simple:
Je surcharge déjà les malloc/free avec des macros pour tracker les fuites de mémoire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 int main() { int*a = (int*)malloc(10*sizeof(int)); a[10] = 50; // overflow }
La seule solution que j'ai trouvée pas très robuste est de "surallouer" la zone mémoire et de la préremplir avec une séquence connue. Et si cette zone est corrompue alors il y a overflow. Exemple : je demande une allocation de 10 entiers mais j'en alloue en fait 20 et je mets dans les cases 10 à 20, une séquence connue donc si je fais un overflow, je risque de détruire cette zone. Mais c'est pas superbe car si je fais un tab[100] = 50; ma solution ne marche pas...
Je sais qu'il existe de outils (le plus souvent payant pour cela) mais je voudrais avoir ma solution customisée
Est-il possible de détecter ce type d'erreur ?
Même question mais pour un tableau statique ?
Merci beaucoup
Partager