【发布时间】:2015-09-01 08:56:12
【问题描述】:
我通过覆盖工具收到以下错误 -
overrun-buffer-arg:通过将结构类型 in_addr 传递给使用参数“8UL”在字节偏移量 7 处访问它的函数,溢出 4 个字节的结构类型。
示例代码:
static u_long addr;
static struct sockaddr_in remote_server;
addr = inet_addr(remote_servername);
memcpy((char *) &remote_server.sin_addr, (char *)&addr, sizeof(addr));
在最后一行,我得到了上述错误。
有人可以通过一些线索,出了什么问题。
如果您需要更多信息,请告诉我。
【问题讨论】:
-
正如消息中所说,
u_long比in_addr大(显然是 4)。 -
u_long 也是 4 字节大小
-
我在solaris 10 OS中检查过,显示u_long的大小为4
-
Coverity 认为是 8 个字节。