aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2015-05-22 09:20:27 +0000
committerChristian Grothoff <christian@grothoff.org>2015-05-22 09:20:27 +0000
commit044664df721c7c0be86c25c2548338154feedb9b (patch)
tree6804f94f4961d7b52d3fb9498c92089ad21df4e2 /src
parent259e8c1c53b241df2717d8d0b740453c2252ef27 (diff)
downloadgnunet-044664df721c7c0be86c25c2548338154feedb9b.tar.gz
gnunet-044664df721c7c0be86c25c2548338154feedb9b.zip
-fix assertion: channel could be NULL (especially if we're dealing with a regex)
Diffstat (limited to 'src')
-rw-r--r--src/vpn/gnunet-helper-vpn.c36
-rw-r--r--src/vpn/gnunet-service-vpn.c19
2 files changed, 38 insertions, 17 deletions
diff --git a/src/vpn/gnunet-helper-vpn.c b/src/vpn/gnunet-helper-vpn.c
index 4f9de1d0a..62696a545 100644
--- a/src/vpn/gnunet-helper-vpn.c
+++ b/src/vpn/gnunet-helper-vpn.c
@@ -111,7 +111,9 @@ init_tun (char *dev)
111 111
112 if (-1 == ioctl (fd, TUNSETIFF, (void *) &ifr)) 112 if (-1 == ioctl (fd, TUNSETIFF, (void *) &ifr))
113 { 113 {
114 fprintf (stderr, "Error with ioctl on `%s': %s\n", "/dev/net/tun", 114 fprintf (stderr,
115 "Error with ioctl on `%s': %s\n",
116 "/dev/net/tun",
115 strerror (errno)); 117 strerror (errno));
116 (void) close (fd); 118 (void) close (fd);
117 return -1; 119 return -1;
@@ -143,14 +145,17 @@ set_address6 (const char *dev, const char *address, unsigned long prefix_len)
143 sa6.sin6_family = AF_INET6; 145 sa6.sin6_family = AF_INET6;
144 if (1 != inet_pton (AF_INET6, address, sa6.sin6_addr.s6_addr)) 146 if (1 != inet_pton (AF_INET6, address, sa6.sin6_addr.s6_addr))
145 { 147 {
146 fprintf (stderr, "Failed to parse address `%s': %s\n", address, 148 fprintf (stderr,
147 strerror (errno)); 149 "Failed to parse IPv6 address `%s'\n",
150 address);
148 exit (1); 151 exit (1);
149 } 152 }
150 153
151 if (-1 == (fd = socket (PF_INET6, SOCK_DGRAM, 0))) 154 if (-1 == (fd = socket (PF_INET6, SOCK_DGRAM, 0)))
152 { 155 {
153 fprintf (stderr, "Error creating socket: %s\n", strerror (errno)); 156 fprintf (stderr,
157 "Error creating socket: %s\n",
158 strerror (errno));
154 exit (1); 159 exit (1);
155 } 160 }
156 161
@@ -236,14 +241,17 @@ set_address4 (const char *dev, const char *address, const char *mask)
236 */ 241 */
237 if (1 != inet_pton (AF_INET, address, &addr->sin_addr.s_addr)) 242 if (1 != inet_pton (AF_INET, address, &addr->sin_addr.s_addr))
238 { 243 {
239 fprintf (stderr, "Failed to parse address `%s': %s\n", address, 244 fprintf (stderr,
240 strerror (errno)); 245 "Failed to parse IPv4 address `%s'\n",
246 address);
241 exit (1); 247 exit (1);
242 } 248 }
243 249
244 if (-1 == (fd = socket (PF_INET, SOCK_DGRAM, 0))) 250 if (-1 == (fd = socket (PF_INET, SOCK_DGRAM, 0)))
245 { 251 {
246 fprintf (stderr, "Error creating socket: %s\n", strerror (errno)); 252 fprintf (stderr,
253 "Error creating socket: %s\n",
254 strerror (errno));
247 exit (1); 255 exit (1);
248 } 256 }
249 257
@@ -254,7 +262,10 @@ set_address4 (const char *dev, const char *address, const char *mask)
254 */ 262 */
255 if (-1 == ioctl (fd, SIOCSIFADDR, &ifr)) 263 if (-1 == ioctl (fd, SIOCSIFADDR, &ifr))
256 { 264 {
257 fprintf (stderr, "ioctl failed at %d: %s\n", __LINE__, strerror (errno)); 265 fprintf (stderr,
266 "ioctl failed at %d: %s\n",
267 __LINE__,
268 strerror (errno));
258 (void) close (fd); 269 (void) close (fd);
259 exit (1); 270 exit (1);
260 } 271 }
@@ -265,8 +276,9 @@ set_address4 (const char *dev, const char *address, const char *mask)
265 addr = (struct sockaddr_in *) &(ifr.ifr_netmask); 276 addr = (struct sockaddr_in *) &(ifr.ifr_netmask);
266 if (1 != inet_pton (AF_INET, mask, &addr->sin_addr.s_addr)) 277 if (1 != inet_pton (AF_INET, mask, &addr->sin_addr.s_addr))
267 { 278 {
268 fprintf (stderr, "Failed to parse address `%s': %s\n", mask, 279 fprintf (stderr,
269 strerror (errno)); 280 "Failed to parse IPv4 address mask `%s'\n",
281 mask);
270 (void) close (fd); 282 (void) close (fd);
271 exit (1); 283 exit (1);
272 } 284 }
@@ -276,7 +288,9 @@ set_address4 (const char *dev, const char *address, const char *mask)
276 */ 288 */
277 if (-1 == ioctl (fd, SIOCSIFNETMASK, &ifr)) 289 if (-1 == ioctl (fd, SIOCSIFNETMASK, &ifr))
278 { 290 {
279 fprintf (stderr, "ioctl failed at line %d: %s\n", __LINE__, 291 fprintf (stderr,
292 "ioctl failed at line %d: %s\n",
293 __LINE__,
280 strerror (errno)); 294 strerror (errno));
281 (void) close (fd); 295 (void) close (fd);
282 exit (1); 296 exit (1);
diff --git a/src/vpn/gnunet-service-vpn.c b/src/vpn/gnunet-service-vpn.c
index 401e4078b..cd0c9a07e 100644
--- a/src/vpn/gnunet-service-vpn.c
+++ b/src/vpn/gnunet-service-vpn.c
@@ -728,10 +728,10 @@ handle_regex_result (void *cls,
728 return; 728 return;
729 } 729 }
730 ts->channel = GNUNET_CADET_channel_create (cadet_handle, 730 ts->channel = GNUNET_CADET_channel_create (cadet_handle,
731 ts, 731 ts,
732 id, 732 id,
733 apptype, 733 apptype,
734 GNUNET_CADET_OPTION_DEFAULT); 734 GNUNET_CADET_OPTION_DEFAULT);
735} 735}
736 736
737 737
@@ -1095,7 +1095,14 @@ route_packet (struct DestinationEntry *destination,
1095 ts->heap_node, 1095 ts->heap_node,
1096 GNUNET_TIME_absolute_get ().abs_value_us); 1096 GNUNET_TIME_absolute_get ().abs_value_us);
1097 } 1097 }
1098 GNUNET_assert (NULL != ts->channel); 1098 if (NULL == ts->channel)
1099 {
1100 GNUNET_STATISTICS_update (stats,
1101 gettext_noop ("# Packets dropped (channel not yet online)"),
1102 1,
1103 GNUNET_NO);
1104 return;
1105 }
1099 1106
1100 /* send via channel */ 1107 /* send via channel */
1101 switch (protocol) 1108 switch (protocol)
@@ -2753,7 +2760,7 @@ service_redirect_to_service (void *cls,
2753 de->dt_tail, 2760 de->dt_tail,
2754 dt); 2761 dt);
2755 ts = create_channel_to_destination (dt, 2762 ts = create_channel_to_destination (dt,
2756 result_af); 2763 result_af);
2757 switch (result_af) 2764 switch (result_af)
2758 { 2765 {
2759 case AF_INET: 2766 case AF_INET: