Question

Klocwork signale une erreur de:-

"ABR – dépassement de la mémoire Tampon, index de tableau de 'oidsp" est peut-être en dehors des limites.Tableau 'oidsp' de taille 64 peuvent utiliser les index valeur(s) -2..-1."

Pour cette ligne:-

if (check_index_lower_legality (len,-1))
{
oidsp[len-1] = specProb;
}

Lorsque check_index_lower_legality est:-

bool check_index_lower_legality (int index, int offset)
/**
 * This function checks that the index with the offset isn't 
 * below zero. 
 * If it is - returns 0 ;
 * If isn't - returns 1 ;
 **/
{

if (  (index + offset )<0) {
   return 0;
  }
 return 1 ; 
}

Toutefois, aucun bug lors de la check_index_lower_legality est:- (qui est d'ailleurs une réponse incorrecte , comme pour les valeurs de décalage de -2 ou -1, il y aura une véritable erreur à l'exécution.

bool check_index_lower_legality (int index, int offset)
/**
 * This function checks that the index with the offset isn't 
 * below zero. 
 * If it is - returns 0 ;
 * If isn't - returns 1 ;
 **/
{
 if (index <=0) {
  return 0;
 }
 return 1;
}

Des idées?

Était-ce utile?

La solution

J'ai peut être raté quelque chose, mais votre fonction (check_index_lower_legality) ne modifie pas le 'len' variable, ni le retour de la fonction utilisée pour accéder à votre tableau, de sorte que votre fragment comme condition semble générer correctement un moteur d'exécution de type dépassement de tampon (pour les valeurs de len < 0).Pourriez-vous peut-être étendre sur l'exemple si vous croyez que le rapport soit vraiment incorrect?

Merci, Gwyn.

Autres conseils

C'est faux bug.Vous avez besoin d'ajouter de contrôle supplémentaires pour raconter len est > 1 toujours.

De sorte que vous pouvez sauter ce bug en ajoutant un totalement indésirables si la condition.

if (check_index_lower_legality (len,-1)) 
{
if(len > 1) 
oidsp[len-1] = specProb; 
} 

Ou vous pouvez marquer ce bug comme fausse alarme et d'exécuter klockworks de nouveau.Il sera en plus probable sens de sauter dans le prochain rapport.

Je ne pense pas que Klocwork pouvez suivre ce type de logique à travers.Vous auriez besoin de lui dire que check_index_lower_legality se comporte de cette manière.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top