Klocwork сообщает об ошибке: -
"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;
}
Есть идеи?