ABR - Klocworks False Alarms и неверный утилизация ошибок

StackOverflow https://stackoverflow.com/questions/3253875

  •  16-09-2020
  •  | 
  •  

Вопрос

Klocworkes сообщает об ошибке: -

"ABR - переполнение буфера, индекс массива «OIDSP» может быть вне границ.Множество «OIDSP» размером 64 может использовать индекс Значение (ы) -2 ..- 1. "

Для этой линии: -

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

Когда check_index_lower_legality: -

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

Однако нет ошибки, когда check_index_lower_legality: - (который кстати, неверный ответ, что касается значения смещения -2 или -1, будет реальная ошибка во время выполнения.

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

Любые идеи?

Это было полезно?

Решение

Я мог бы что-то упустить, но ваша функция (check_index_lower_legality) не модифицирует переменную «len», а также возврат от функции, используемой для доступа к вашему массиву, поэтому ваш фрагмент, как при условии, что будет отображаться правильно генерировать время выполненияПодолевание буфера (для значений Len <0).Может ли вы, возможно, расширить на примере, если вы считаете, что отчет быть действительно неверным?

Спасибо, Гвин.

Другие советы

Это ложная ошибка.Вам необходимо добавить дополнительную проверку для раскладки Лен> 1 всегда.

Так что вы можете пропустить эту ошибку, добавив совершенно нежелательное, если состояние.

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

Или вы можете пометить эту ошибку как ложную тревогу и снова запустить klockworks.Это будет в наиболее вероятном смысле пропустить это в следующем отчете.

Я не думаю, что Klocworks может выполнить этот тип логики.Вам нужно будет сказать, что check_index_lower_legality ведет себя таким образом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top