#include<stdio.h>
#include<string.h>
#define RPTE_TE_TNL (x) x->pTeTnlInfo
#define RSVPTE_TNL_NAME(x) x->au1TnlName
#define LENGTH 32
#define STRLEN(s) strlen((const char *)(s))
typedef char INT1;
unsigned short length;
struct _tTeTnlInfo
{
unsigned char au1TnlName[LENGTH];
}
length = unsigned short( STRLEN ((INT1 *)RSVPTE_TNL_NAME (RPTE_TE_TNL (pRsvpTeTnlInfo))) );
Klockwork 对上述行给出错误 - ABR 分析缓冲区溢出,“pRsvpTeTnlInfo->pTeTnlInfo->au1TnlName”的数组索引可能超出范围。大小为 32 的数组 'pRsvpTeTnlInfo->pTeTnlInfo->au1TnlName' 可以使用索引值 0..INT_MAX-1。
我无法找出根本原因,为什么 klocwork 会出现此错误。有人可以帮我吗 ?