When using socket(PF_PACKET, ...) we need to use sizeof(struct sockaddr_ll)
as a size of fromaddr in recvfrom() call.
Signed-off-by: Vitezslav Samel <vitezslav(a)samel.cz>
---
src/packet.c | 7 +++----
1 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/src/packet.c b/src/packet.c
index 5288b25..8e13780 100644
--- a/src/packet.c
+++ b/src/packet.c
@@ -169,10 +169,9 @@ void getpacket(int fd, char *buf, struct sockaddr_ll *fromaddr, int
*ch,
*ch = ERR;
if (FD_ISSET(fd, &set)) {
- fromlen = sizeof(struct sockaddr_pkt);
- *br =
- recvfrom(fd, buf, MAX_PACKET_SIZE, 0,
- (struct sockaddr *) fromaddr, &fromlen);
+ fromlen = sizeof(struct sockaddr_ll);
+ *br = recvfrom(fd, buf, MAX_PACKET_SIZE, 0,
+ (struct sockaddr *) fromaddr, &fromlen);
ifr.ifr_ifindex = fromaddr->sll_ifindex;
ioctl(fd, SIOCGIFNAME, &ifr);
strcpy(ifname, ifr.ifr_name);
--
1.7.8.4