質問
klocworkは、次のエラーを報告します。 -
"ABR - バッファオーバーフロー、のアレイインデックス 'oidsp'は範囲外のものかもしれません。アレイ サイズ64の「OIDSP」は索引を使用することができます 値(S)-2 ..- 1 "
この行の場合:
if (check_index_lower_legality (len,-1))
{
oidsp[len-1] = specProb;
}
.
check_index_lower_lyalityの場合:
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_lyality)は 'len'変数を変更しません。バッファアンダーフロー(Len <0の値について)。あなたが報告書を真に間違っていると信じるならば、あなたはおそらく拡大することができますか?
感謝、Gwyn。
他のヒント
これは誤ったバグです。LENが常に> 1であると言うための追加チェックを追加する必要があります。
だからあなたはこのバグをスキップすることができます
if (check_index_lower_legality (len,-1))
{
if(len > 1)
oidsp[len-1] = specProb;
}
.
またはこのバグを誤警報としてマークしてKlockWorksを再度実行することもできます。それは最も可能性の高い意味でこれを次の報告書でスキップします。
Klocworkがこのタイプのロジックを通過することができるとは思わない。check_index_lower_legalityがこのように動作すると言う必要があります。
所属していません StackOverflow