diff options
| author | vda <vda@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2006-11-20 01:13:09 +0000 |
|---|---|---|
| committer | vda <vda@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2006-11-20 01:13:09 +0000 |
| commit | ea08aaa9465f2eabfde17f029df71a121dba5cc9 (patch) | |
| tree | 18eb5bb7b7fa9a3ceb9c607eefb571ddb0c5e95b | |
| parent | e3f7b5a630e6d08cddfed2323c8d47b665415569 (diff) | |
| download | busybox-w32-ea08aaa9465f2eabfde17f029df71a121dba5cc9.tar.gz busybox-w32-ea08aaa9465f2eabfde17f029df71a121dba5cc9.tar.bz2 busybox-w32-ea08aaa9465f2eabfde17f029df71a121dba5cc9.zip | |
add compile-time check for correct DHCP packet size
git-svn-id: svn://busybox.net/trunk/busybox@16587 69ca8d6d-28ef-0310-b511-8ec308f3f277
| -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) | |||
| 109 | 109 | ||
| 110 | 110 | ||
| 111 | /* Construct a ip/udp header for a packet, and specify the source and dest hardware address */ | 111 | /* Construct a ip/udp header for a packet, and specify the source and dest hardware address */ |
| 112 | void BUG_sizeof_struct_udp_dhcp_packet_must_be_576(void); | ||
| 112 | int udhcp_raw_packet(struct dhcpMessage *payload, | 113 | int udhcp_raw_packet(struct dhcpMessage *payload, |
| 113 | uint32_t source_ip, int source_port, | 114 | uint32_t source_ip, int source_port, |
| 114 | uint32_t dest_ip, int dest_port, uint8_t *dest_arp, int ifindex) | 115 | uint32_t dest_ip, int dest_port, uint8_t *dest_arp, int ifindex) |
| @@ -154,6 +155,9 @@ int udhcp_raw_packet(struct dhcpMessage *payload, | |||
| 154 | packet.ip.ttl = IPDEFTTL; | 155 | packet.ip.ttl = IPDEFTTL; |
| 155 | packet.ip.check = udhcp_checksum(&(packet.ip), sizeof(packet.ip)); | 156 | packet.ip.check = udhcp_checksum(&(packet.ip), sizeof(packet.ip)); |
| 156 | 157 | ||
| 158 | if (sizeof(struct udp_dhcp_packet) != 576) | ||
| 159 | BUG_sizeof_struct_udp_dhcp_packet_must_be_576(); | ||
| 160 | |||
| 157 | result = sendto(fd, &packet, sizeof(struct udp_dhcp_packet), 0, | 161 | result = sendto(fd, &packet, sizeof(struct udp_dhcp_packet), 0, |
| 158 | (struct sockaddr *) &dest, sizeof(dest)); | 162 | (struct sockaddr *) &dest, sizeof(dest)); |
| 159 | if (result <= 0) { | 163 | if (result <= 0) { |
