Fixed uninitialized memory warning before write()
This commit is contained in:
19
src/lwIP.cpp
19
src/lwIP.cpp
@@ -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);
|
||||
}
|
||||
|
||||
@@ -716,11 +716,8 @@ namespace ZeroTier {
|
||||
// get frame len
|
||||
memcpy(&len, tap->pico_frame_rxbuf, sizeof(int32_t));
|
||||
if (len > sizeof(int32_t)) { // meaning, since we package the len in the msg, we don't want to recv a 0-(sizeof(int32_t)) sized frame
|
||||
DEBUG_ERROR("tap->pico_frame_rxbuf + sizeof(int32_t)=%p, len=%d", tap->pico_frame_rxbuf + sizeof(int32_t), len-(sizeof(int32_t)));
|
||||
memcpy(frame, tap->pico_frame_rxbuf + sizeof(int32_t), len-(sizeof(int32_t)) ); // get frame data
|
||||
DEBUG_ERROR("tap->pico_frame_rxbuf=%p, tap->pico_frame_rxbuf + len=%p, MAX_PICO_FRAME_RX_BUF_SZ-len=%d", tap->pico_frame_rxbuf, tap->pico_frame_rxbuf + len, MAX_PICO_FRAME_RX_BUF_SZ-len);
|
||||
memmove(tap->pico_frame_rxbuf, tap->pico_frame_rxbuf + len, MAX_PICO_FRAME_RX_BUF_SZ-len); // shift buffer
|
||||
DEBUG_ERROR("dev=%p, frame=%p, len=%d", dev, frame, (len-sizeof(int32_t)));
|
||||
if ((err = pico_stack_recv(dev, (uint8_t*)frame, (len-sizeof(int32_t)))) < 0) {
|
||||
if (picostack) {
|
||||
DEBUG_ERROR("pico_stack_recv(), err=%d, pico_err=%d, %s", err, pico_err, picostack->beautify_pico_error(pico_err));
|
||||
|
||||
Reference in New Issue
Block a user