From: Vincent Bernat Date: Thu, 6 Jun 2013 20:38:43 +0000 (+0200) Subject: lldpd: fix an alignment (non-)issue X-Git-Tag: 0.7.4~21 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=02cf0357c91601d99e5f91923d07493813768ed2;p=thirdparty%2Flldpd.git lldpd: fix an alignment (non-)issue --- 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);