accès aux groupes de discussion, consultation et publication d'articles, recherche de "newsgroups"...
membres, identifiez-vous
é-mail Mot de passe
nouveau ? mot de passe oublié ?
Chargement... Chargement en cours...

Groupes français belges canadiens suisses internationaux Nétiquette
Échangez opinions et commentaires dans les forums de discussion.

Re: optimisation vs securite

 [  Nouvelle Discussion Nouvelle discussion  |  Répondre au groupe Répondre au groupe  |  fr.comp.lang.c ] 

Retour : Accueil du site fr comp lang c   charte stats de ce groupe


  Sujet:   Re: optimisation vs securite  
 De: xro...@free.fr.NOSPAM.invalid (Xavier Roche)
 Groupes: fr.comp.lang.c
 Organisation: Nowhere Corp.
 Date: 07. May 2008, 14:00:42
 References: 1
Thierry B. a écrit :
> problèmes de potentiels buffer-overflow quand Gcc (et d'autres)
> optimisent un peu trop sur certaines condition/tests.

De toute manière, c'est le test <pointeur>+<taille venant de 
l'extérieur> qui est potentiellement dangereux.

C'est le cas classique dans beaucoup (trop) de "parseurs" d'objets 
structurés (fichiers GIF, PNG, documents divers, etc.) qui ont souvent 
une structure du genre:

void parseFoo(const unsigned char *buffer, size_t buffSize) {
	/* current pointer */
	const unsigned char *ptr;
	/* parse all "foo" blocks */
	for(ptr = buffer ; ptr + 4 <= buff + buffSize ; ) {
		/* next block size */
		unsigned int size = ( ptr[0] << 24 )
				+ ( ptr[1] << 16 )
				+ ( ptr[2] << 8 )
				+ ptr[3];
		ptr += 4;  /* skip size ob next chunk */
		/* block not too large/corrupted/truncated ? */
		if (ptr + size  <= buffer + buffSize) {
			..
		} else {
			break ;
		}
		ptr += size;
	}
}

Une forme moins dangereuse qui évite que l'information extérieure "size" 
ne puisse provoquer un débordement (par exemple avec size == 0xfffffffc 
qui provoque une boucle rigolote) et de séparer dans la comparaison à 
gauche ce qui provient de l'extérieur, et à droite, le reste:

-		if (ptr + size  <= buffer + buffSize) {
+		if (size  <= buffer + buffSize - ptr) {


DateSujet  Auteur
01.01.
o 
Groups Explorer contact votre avis comment ça marche? rechercher un groupe suggérer un groupe abuse accueil du site   Imprimer cette page   Envoyer cette page à un(e) ami(e)
Usenet Gratuit