Klocwork 报告以下错误:-
“ABR – 缓冲区溢出,'oidsp' 的数组索引可能超出范围。大小为 64 的数组 'oidsp' 可能使用索引值 -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;
}
有任何想法吗?