From: Denis Vlasenko Date: Mon, 20 Nov 2006 01:13:09 +0000 (-0000) Subject: add compile-time check for correct DHCP packet size X-Git-Tag: 1_4_0~382 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=c9cdeaa3fef3f93eb259957d36c760ec8902e0c1;p=oweals%2Fbusybox.git add compile-time check for correct DHCP packet size --- diff --git a/networking/udhcp/packet.c b/networking/udhcp/packet.c index e79542d08..85910447b 100644 --- a/networking/udhcp/packet.c +++ b/networking/udhcp/packet.c @@ -109,6 +109,7 @@ uint16_t udhcp_checksum(void *addr, int count) /* Construct a ip/udp header for a packet, and specify the source and dest hardware address */ +void BUG_sizeof_struct_udp_dhcp_packet_must_be_576(void); int udhcp_raw_packet(struct dhcpMessage *payload, uint32_t source_ip, int source_port, uint32_t dest_ip, int dest_port, uint8_t *dest_arp, int ifindex) @@ -154,6 +155,9 @@ int udhcp_raw_packet(struct dhcpMessage *payload, packet.ip.ttl = IPDEFTTL; packet.ip.check = udhcp_checksum(&(packet.ip), sizeof(packet.ip)); + if (sizeof(struct udp_dhcp_packet) != 576) + BUG_sizeof_struct_udp_dhcp_packet_must_be_576(); + result = sendto(fd, &packet, sizeof(struct udp_dhcp_packet), 0, (struct sockaddr *) &dest, sizeof(dest)); if (result <= 0) {