首先,这是我头给我们出的freeBSD 的一个bug.题目
void *memcpy(void *dest, void *src, size_t n);
#define KSIZE 1024
char kbuf[KSIZE];
int copy_from_kernel(void *user_dest, int maxlen)
{
int len = KSIZE < maxlen ? KSIZE : maxlen;
memcpy(user_dest, kbuf, len);
return len;
}
问: 调用此函数有什么风险.
当maxlen为负值时,会导致内存内存越界访问.
解决方法:将 maxlen 类型 int 改为 size_t.