Pregunta

klocwork reporta un error de: -

"ABR - Desbordamiento de tampón, índice de matriz de 'OIDSP' puede estar fuera de los límites.Formación 'OIDSP' de tamaño 64 puede usar índice Valor (s) -2 ..- 1. "

para esta línea: -

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

cuando check_index_lower_legalidad es: -

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 ; 
}

Sin embargo, no hay errores cuando check_index_lower_legality es: - (que es por cierto, una respuesta incorrecta, en cuanto a los valores de compensación de -2 o -1 habrá un error real en el tiempo de ejecución.

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;
}

¿Alguna idea?

¿Fue útil?

Solución

Podría faltarme algo, pero su función (cheque_index_lower_legalidad) no modifica la variable 'len', ni la devolución de la función se usa para acceder a su matriz, por lo que su fragmento según lo dispuesto parezca generar correctamente un tiempo de ejecuciónSubfírico de tampón (para valores de len <0).¿Podría expandirse el ejemplo si cree que el informe es verdaderamente incorrecto?

gracias, gwyn.

Otros consejos

Este es un error falso.Debe agregar cheque adicional para decirle a LEN es> 1 siempre.

Para que pueda omitir este error agregando una condición totalmente no deseada.

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

O puede marcar este error como falsa alarma y ejecutar klockworks de nuevo.En el sentido más probable, saldrá de esto en el siguiente informe.

No creo que Klocwork pueda seguir este tipo de lógica.Deberías decirle que check_index_lower_legalidad se comporta de esta manera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top