Fixed uninitialized memory warning before write()

This commit is contained in:
Joseph Henry
2017-09-17 23:26:38 -07:00
parent ed51f41b47
commit 5ec6f1846b
2 changed files with 11 additions and 11 deletions

View File

@@ -850,6 +850,7 @@ namespace ZeroTier
#endif
char udp_payload_buf[ZT_SOCKET_MSG_BUF_SZ];
memset(udp_payload_buf, 0, sizeof(ZT_SOCKET_MSG_BUF_SZ));
char *msg_ptr = udp_payload_buf;
int tot_len = 0;
while(p != NULL) {
@@ -861,21 +862,23 @@ namespace ZeroTier
tot_len += p->len;
p = p->next;
}
if (tot_len) {
if (tot_len > 0) {
int w = 0;
//DEBUG_INFO("tot_len=%d", tot_len);
char udp_msg_buf[ZT_SOCKET_MSG_BUF_SZ]; // [sz : addr : payload]
// [sz : addr : payload]
char udp_msg_buf[ZT_SOCKET_MSG_BUF_SZ];
memset(udp_msg_buf, 0, sizeof(ZT_SOCKET_MSG_BUF_SZ));
int32_t len = sizeof(struct sockaddr_storage) + tot_len;
int32_t msg_tot_len = sizeof(int32_t) + len;
memcpy(udp_msg_buf, &len, sizeof(int32_t)); // len: sockaddr+payload
memcpy(udp_msg_buf + sizeof(int32_t), &ss, sizeof(struct sockaddr_storage)); // sockaddr
memcpy(udp_msg_buf + sizeof(int32_t) + sizeof(struct sockaddr_storage), &udp_payload_buf, tot_len); // payload
// len: sockaddr+payload
memcpy(udp_msg_buf, &len, sizeof(int32_t));
// sockaddr
memcpy(udp_msg_buf + sizeof(int32_t), &ss, sizeof(struct sockaddr_storage));
// payload
memcpy(udp_msg_buf + sizeof(int32_t) + sizeof(struct sockaddr_storage), &udp_payload_buf, tot_len);
if ((w = write(vs->sdk_fd, udp_msg_buf, msg_tot_len)) < 0) {
perror("write");
DEBUG_ERROR("write(fd=%d)=%d, errno=%d", vs->sdk_fd, w, errno);
}
//vs->tap->phyOnUnixWritable(vs->sock, NULL, true);
//vs->tap->_phy.setNotifyWritable(vs->sock, true);
}
pbuf_free(q);
}