add compile-time check for correct DHCP packet size
authorDenis Vlasenko <vda.linux@googlemail.com>
Mon, 20 Nov 2006 01:13:09 +0000 (01:13 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Mon, 20 Nov 2006 01:13:09 +0000 (01:13 -0000)
networking/udhcp/packet.c

index e79542d082214418b0708e2b344463b72c850a66..85910447baaee8a3bdd12011eef6f88cb3f41a0a 100644 (file)
@@ -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) {