diff options
author | Christian Grothoff <christian@grothoff.org> | 2012-01-30 22:01:44 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2012-01-30 22:01:44 +0000 |
commit | ec9338c28ca046638191baba9a7cc05a7a4dd28d (patch) | |
tree | fe04bfdb1bfbc081da32312549f07a3dd4078e20 /src/tun | |
parent | 14dc5d7546f1588caeee4af92fcad2e435008ee4 (diff) | |
download | gnunet-ec9338c28ca046638191baba9a7cc05a7a4dd28d.tar.gz gnunet-ec9338c28ca046638191baba9a7cc05a7a4dd28d.zip |
-extra size checks
Diffstat (limited to 'src/tun')
-rw-r--r-- | src/tun/tun.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/tun/tun.c b/src/tun/tun.c index c1e7cbcb2..3b0e9b94a 100644 --- a/src/tun/tun.c +++ b/src/tun/tun.c | |||
@@ -49,6 +49,7 @@ GNUNET_TUN_initialize_ipv4_header (struct GNUNET_TUN_IPv4Header *ip, | |||
49 | const struct in_addr *src, | 49 | const struct in_addr *src, |
50 | const struct in_addr *dst) | 50 | const struct in_addr *dst) |
51 | { | 51 | { |
52 | GNUNET_assert (20 == sizeof (struct GNUNET_TUN_IPv4Header)); | ||
52 | GNUNET_assert (payload_length <= UINT16_MAX - sizeof (struct GNUNET_TUN_IPv4Header)); | 53 | GNUNET_assert (payload_length <= UINT16_MAX - sizeof (struct GNUNET_TUN_IPv4Header)); |
53 | memset (ip, 0, sizeof (struct GNUNET_TUN_IPv4Header)); | 54 | memset (ip, 0, sizeof (struct GNUNET_TUN_IPv4Header)); |
54 | ip->header_length = sizeof (struct GNUNET_TUN_IPv4Header) / 4; | 55 | ip->header_length = sizeof (struct GNUNET_TUN_IPv4Header) / 4; |
@@ -80,6 +81,7 @@ GNUNET_TUN_initialize_ipv6_header (struct GNUNET_TUN_IPv6Header *ip, | |||
80 | const struct in6_addr *src, | 81 | const struct in6_addr *src, |
81 | const struct in6_addr *dst) | 82 | const struct in6_addr *dst) |
82 | { | 83 | { |
84 | GNUNET_assert (40 == sizeof (struct GNUNET_TUN_IPv6Header)); | ||
83 | GNUNET_assert (payload_length <= UINT16_MAX - sizeof (struct GNUNET_TUN_IPv6Header)); | 85 | GNUNET_assert (payload_length <= UINT16_MAX - sizeof (struct GNUNET_TUN_IPv6Header)); |
84 | memset (ip, 0, sizeof (struct GNUNET_TUN_IPv6Header)); | 86 | memset (ip, 0, sizeof (struct GNUNET_TUN_IPv6Header)); |
85 | ip->version = 6; | 87 | ip->version = 6; |
@@ -108,6 +110,7 @@ GNUNET_TUN_calculate_tcp4_checksum (const struct GNUNET_TUN_IPv4Header *ip, | |||
108 | uint32_t sum; | 110 | uint32_t sum; |
109 | uint16_t tmp; | 111 | uint16_t tmp; |
110 | 112 | ||
113 | GNUNET_assert (20 == sizeof (struct GNUNET_TUN_TcpHeader)); | ||
111 | GNUNET_assert (payload_length + sizeof (struct GNUNET_TUN_IPv4Header) + sizeof (struct GNUNET_TUN_TcpHeader) == | 114 | GNUNET_assert (payload_length + sizeof (struct GNUNET_TUN_IPv4Header) + sizeof (struct GNUNET_TUN_TcpHeader) == |
112 | ntohs (ip->total_length)); | 115 | ntohs (ip->total_length)); |
113 | GNUNET_assert (IPPROTO_TCP == ip->protocol); | 116 | GNUNET_assert (IPPROTO_TCP == ip->protocol); |
@@ -143,6 +146,7 @@ GNUNET_TUN_calculate_tcp6_checksum (const struct GNUNET_TUN_IPv6Header *ip, | |||
143 | uint32_t sum; | 146 | uint32_t sum; |
144 | uint32_t tmp; | 147 | uint32_t tmp; |
145 | 148 | ||
149 | GNUNET_assert (20 == sizeof (struct GNUNET_TUN_TcpHeader)); | ||
146 | GNUNET_assert (payload_length + sizeof (struct GNUNET_TUN_TcpHeader) == | 150 | GNUNET_assert (payload_length + sizeof (struct GNUNET_TUN_TcpHeader) == |
147 | ntohs (ip->payload_length)); | 151 | ntohs (ip->payload_length)); |
148 | GNUNET_assert (IPPROTO_TCP == ip->next_header); | 152 | GNUNET_assert (IPPROTO_TCP == ip->next_header); |
@@ -176,6 +180,7 @@ GNUNET_TUN_calculate_udp4_checksum (const struct GNUNET_TUN_IPv4Header *ip, | |||
176 | uint32_t sum; | 180 | uint32_t sum; |
177 | uint16_t tmp; | 181 | uint16_t tmp; |
178 | 182 | ||
183 | GNUNET_assert (8 == sizeof (struct GNUNET_TUN_UdpHeader)); | ||
179 | GNUNET_assert (payload_length + sizeof (struct GNUNET_TUN_IPv4Header) + sizeof (struct GNUNET_TUN_UdpHeader) == | 184 | GNUNET_assert (payload_length + sizeof (struct GNUNET_TUN_IPv4Header) + sizeof (struct GNUNET_TUN_UdpHeader) == |
180 | ntohs (ip->total_length)); | 185 | ntohs (ip->total_length)); |
181 | GNUNET_assert (IPPROTO_UDP == ip->protocol); | 186 | GNUNET_assert (IPPROTO_UDP == ip->protocol); |
@@ -253,6 +258,7 @@ GNUNET_TUN_calculate_icmp_checksum (struct GNUNET_TUN_IcmpHeader *icmp, | |||
253 | { | 258 | { |
254 | uint32_t sum; | 259 | uint32_t sum; |
255 | 260 | ||
261 | GNUNET_assert (8 == sizeof (struct GNUNET_TUN_IcmpHeader)); | ||
256 | icmp->crc = 0; | 262 | icmp->crc = 0; |
257 | sum = GNUNET_CRYPTO_crc16_step (0, | 263 | sum = GNUNET_CRYPTO_crc16_step (0, |
258 | icmp, | 264 | icmp, |