add compile-time check for correct DHCP packet size
No binary (build failed)
—
(log yok)
| @@ -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) { | |