diff options
author | Christian Grothoff <christian@grothoff.org> | 2015-05-22 09:20:27 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2015-05-22 09:20:27 +0000 |
commit | 044664df721c7c0be86c25c2548338154feedb9b (patch) | |
tree | 6804f94f4961d7b52d3fb9498c92089ad21df4e2 /src | |
parent | 259e8c1c53b241df2717d8d0b740453c2252ef27 (diff) | |
download | gnunet-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.c | 36 | ||||
-rw-r--r-- | src/vpn/gnunet-service-vpn.c | 19 |
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: |