From 02cf0357c91601d99e5f91923d07493813768ed2 Mon Sep 17 00:00:00 2001 From: Vincent Bernat Date: Thu, 6 Jun 2013 22:38:43 +0200 Subject: [PATCH] lldpd: fix an alignment (non-)issue --- src/daemon/lldpd.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/daemon/lldpd.c b/src/daemon/lldpd.c index 2431d683..7924e838 100644 --- a/src/daemon/lldpd.c +++ b/src/daemon/lldpd.c @@ -378,8 +378,11 @@ lldpd_decode(struct lldpd *cfg, char *frame, int s, if (s < sizeof(struct ether_header) + 4) /* Too short, just discard it */ return; + /* Decapsulate VLAN frames */ - if (((struct ether_header*)frame)->ether_type == htons(ETHERTYPE_VLAN)) { + struct ether_header eheader; + memcpy(&eheader, frame, sizeof(struct ether_header)); + if (eheader.ether_type == htons(ETHERTYPE_VLAN)) { /* VLAN decapsulation means to shift 4 bytes left the frame from * offset 2*ETHER_ADDR_LEN */ memmove(frame + 2*ETHER_ADDR_LEN, frame + 2*ETHER_ADDR_LEN + 4, s - 2*ETHER_ADDR_LEN); -- 2.39.5