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:
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
}
Je surcharge déjà les malloc/free avec des macros pour tracker les fuites de mémoire.

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