[英]Odd Klockwork finding (Buffer overflow)
我無法弄清楚這一點。 我有以下代碼:
#define SIZE 1000
#define MEMORY 0x10000000
unsigned char table[SIZE];
int i;
for(i=0;i<SIZE;i++) {
table[i] = *(unsigned char*)(MEMORY +i);
}
而Klockwork告訴我
緩沖區溢出,'table'的數組索引可能超出范圍。 大小為1000(調整大小為250)的數組'表'可以使用索引值250..999。
這里有真正的問題嗎? 如果沒有,這似乎是一個非常明顯的誤報。
此代碼沒有問題:Frama-C確認使用此命令行: frama-c -val -absolute-valid-range 0x10000000-0x10001000 file.c
前提是您將for循環放在函數體中。
根據Klockwork的說法,這個誤報可能與您的演員有關:請參閱http://developer.klocwork.com/community/forums/klocwork-general/general-discussion/buffer-overflow-adjusted-size
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.