diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2006-11-20 04:13:09 +0300 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2006-11-20 04:13:09 +0300 |
commit | c9cdeaa3fef3f93eb259957d36c760ec8902e0c1 (patch) | |
tree | 18eb5bb7b7fa9a3ceb9c607eefb571ddb0c5e95b /networking | |
parent | 4a5cf16a368bf513a2c2e3b27821a37d3df3cf89 (diff) |
add compile-time check for correct DHCP packet size
Diffstat (limited to 'networking')
-rw-r--r-- | networking/udhcp/packet.c | 4 |
1 files changed, 4 insertions, 0 deletions
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) { |