diff options
author | Christian Grothoff <christian@grothoff.org> | 2012-01-26 16:11:25 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2012-01-26 16:11:25 +0000 |
commit | 0d2806354e0358c8df71b0d46283f6dbf0a1914f (patch) | |
tree | f7510a438c04ce680e1955e71a3e9d2e3a8d91ed /src/vpn | |
parent | 6f313e9d4d7d5c94f9831a2f858e85a29e999df9 (diff) | |
download | gnunet-0d2806354e0358c8df71b0d46283f6dbf0a1914f.tar.gz gnunet-0d2806354e0358c8df71b0d46283f6dbf0a1914f.zip |
-check tcp off value
Diffstat (limited to 'src/vpn')
-rw-r--r-- | src/vpn/gnunet-service-vpn.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/vpn/gnunet-service-vpn.c b/src/vpn/gnunet-service-vpn.c index 796a4a6e1..7b29cbbd4 100644 --- a/src/vpn/gnunet-service-vpn.c +++ b/src/vpn/gnunet-service-vpn.c | |||
@@ -895,6 +895,11 @@ route_packet (struct DestinationEntry *destination, | |||
895 | return; | 895 | return; |
896 | } | 896 | } |
897 | udp = payload; | 897 | udp = payload; |
898 | if (udp->len < sizeof (struct GNUNET_TUN_UdpHeader)) | ||
899 | { | ||
900 | GNUNET_break_op (0); | ||
901 | return GNUNET_SYSERR; | ||
902 | } | ||
898 | spt = ntohs (udp->spt); | 903 | spt = ntohs (udp->spt); |
899 | dpt = ntohs (udp->dpt); | 904 | dpt = ntohs (udp->dpt); |
900 | get_tunnel_key_from_ips (af, | 905 | get_tunnel_key_from_ips (af, |
@@ -915,6 +920,11 @@ route_packet (struct DestinationEntry *destination, | |||
915 | return; | 920 | return; |
916 | } | 921 | } |
917 | tcp = payload; | 922 | tcp = payload; |
923 | if (tcp->off * 4 < sizeof (struct GNUNET_TUN_TcpHeader)) | ||
924 | { | ||
925 | GNUNET_break_op (0); | ||
926 | return GNUNET_SYSERR; | ||
927 | } | ||
918 | spt = ntohs (tcp->spt); | 928 | spt = ntohs (tcp->spt); |
919 | dpt = ntohs (tcp->dpt); | 929 | dpt = ntohs (tcp->dpt); |
920 | get_tunnel_key_from_ips (af, | 930 | get_tunnel_key_from_ips (af, |
@@ -2203,6 +2213,11 @@ receive_tcp_back (void *cls GNUNET_UNUSED, struct GNUNET_MESH_Tunnel *tunnel, | |||
2203 | inet_ntop (ts->af, &ts->source_ip, dbuf, sizeof (dbuf)), | 2213 | inet_ntop (ts->af, &ts->source_ip, dbuf, sizeof (dbuf)), |
2204 | ts->source_port); | 2214 | ts->source_port); |
2205 | } | 2215 | } |
2216 | if (data->tcp_header.off * 4 < sizeof (struct GNUNET_TUN_TcpHeader)) | ||
2217 | { | ||
2218 | GNUNET_break_op (0); | ||
2219 | return GNUNET_SYSERR; | ||
2220 | } | ||
2206 | switch (ts->af) | 2221 | switch (ts->af) |
2207 | { | 2222 | { |
2208 | case AF_INET: | 2223 | case AF_INET: |