浏览代码

core: raw sock - reset the rcv_msg and proper test for totlen

(cherry picked from commit 145e3a1e461dd53fb1e06bae619d20a09dcffe75)
(cherry picked from commit 6bf6cfbb90c3fd29cb0c5c079b0eef44892690bf)
Daniel-Constantin Mierla 7 年之前
父节点
当前提交
6b5b04e071
共有 1 个文件被更改,包括 2 次插入1 次删除
  1. 2 1
      src/core/raw_sock.c

+ 2 - 1
src/core/raw_sock.c

@@ -228,6 +228,7 @@ int recvpkt4(int sock, char* buf, int len, union sockaddr_union* from,
 
 	iov[0].iov_base=buf;
 	iov[0].iov_len=len;
+	memset(&rcv_msg, 0, sizeof(struct msghdr));
 	rcv_msg.msg_name=from;
 	rcv_msg.msg_namelen=sockaddru_len(*from);
 	rcv_msg.msg_control=msg_ctrl_buf;
@@ -603,7 +604,7 @@ int raw_iphdr_udp4_send(int rsock, char* buf, unsigned int len,
 	int ret;
 
 	totlen = len + sizeof(hdr);
-	if (unlikely(totlen) > 65535)
+	if (unlikely(totlen > 65535))
 		return -2;
 	memset(&snd_msg, 0, sizeof(snd_msg));
 	snd_msg.msg_name=&to->sin;