From f6720fe62e879e7a73a0e95fa7260cb2af92b28b Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Fri, 18 Jun 2021 15:17:11 +0900 Subject: [PATCH] arp-util: check sent message size --- src/libsystemd-network/arp-util.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/libsystemd-network/arp-util.c b/src/libsystemd-network/arp-util.c index 3c04a86e89..d17ae1be04 100644 --- a/src/libsystemd-network/arp-util.c +++ b/src/libsystemd-network/arp-util.c @@ -112,7 +112,7 @@ static int arp_send_packet( .ea_hdr.ar_pln = sizeof(be32_t), /* PLEN */ .ea_hdr.ar_op = htobe16(ARPOP_REQUEST), /* REQUEST */ }; - int r; + ssize_t n; assert(fd >= 0); assert(pa != 0); @@ -124,9 +124,11 @@ static int arp_send_packet( if (announce) memcpy(&arp.arp_spa, &pa, sizeof(pa)); - r = sendto(fd, &arp, sizeof(struct ether_arp), 0, &link.sa, sizeof(link.ll)); - if (r < 0) + n = sendto(fd, &arp, sizeof(struct ether_arp), 0, &link.sa, sizeof(link.ll)); + if (n < 0) return -errno; + if (n != sizeof(struct ether_arp)) + return -EIO; return 0; }