aboutsummaryrefslogtreecommitdiff
path: root/src/vpn
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2012-01-26 16:11:25 +0000
committerChristian Grothoff <christian@grothoff.org>2012-01-26 16:11:25 +0000
commit0d2806354e0358c8df71b0d46283f6dbf0a1914f (patch)
treef7510a438c04ce680e1955e71a3e9d2e3a8d91ed /src/vpn
parent6f313e9d4d7d5c94f9831a2f858e85a29e999df9 (diff)
downloadgnunet-0d2806354e0358c8df71b0d46283f6dbf0a1914f.tar.gz
gnunet-0d2806354e0358c8df71b0d46283f6dbf0a1914f.zip
-check tcp off value
Diffstat (limited to 'src/vpn')
-rw-r--r--src/vpn/gnunet-service-vpn.c15
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: