Clear Ethernet header when reading packets from a tun device.
[oweals/tinc.git] / src / linux / device.c
index cbf215298dd635e8ff1d2cb869c6d93d114e4862..f770f7fade4d15d732100335cfcd84a83702c777 100644 (file)
@@ -155,6 +155,7 @@ static bool read_packet(vpn_packet_t *packet) {
                                return false;
                        }
 
+                       memset(packet->data, 0, 12);
                        packet->len = lenin + 10;
                        break;
                case DEVICE_TYPE_TAP:
@@ -210,7 +211,7 @@ static bool write_packet(vpn_packet_t *packet) {
                        }
                        break;
                case DEVICE_TYPE_ETHERTAP:
-                       *(short int *)(packet->data - 2) = packet->len;
+                       memcpy(packet->data - 2, &packet->len, 2);
 
                        if(write(device_fd, packet->data - 2, packet->len + 2) < 0) {
                                logger(LOG_ERR, "Can't write to %s %s: %s", device_info, device,