projects
/
oweals
/
gnunet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
-fix leak
[oweals/gnunet.git]
/
src
/
dns
/
gnunet-service-dns.c
diff --git
a/src/dns/gnunet-service-dns.c
b/src/dns/gnunet-service-dns.c
index 463176fbc5232dda7199d80e80a08b7963b6602a..79beef83191d304621897166dbf755ab8a5714db 100644
(file)
--- a/
src/dns/gnunet-service-dns.c
+++ b/
src/dns/gnunet-service-dns.c
@@
-462,6
+462,7
@@
open_socket (int af)
break;
default:
GNUNET_break (0);
break;
default:
GNUNET_break (0);
+ GNUNET_NETWORK_socket_close (ret);
return NULL;
}
sa->sa_family = af;
return NULL;
}
sa->sa_family = af;
@@
-1324,7
+1325,7
@@
process_helper_messages (void *cls GNUNET_UNUSED, void *client,
srca4->sin_port = udp->source_port;
dsta4->sin_port = udp->destination_port;
#if HAVE_SOCKADDR_IN_SIN_LEN
srca4->sin_port = udp->source_port;
dsta4->sin_port = udp->destination_port;
#if HAVE_SOCKADDR_IN_SIN_LEN
- srca4->sin_len = sizeof (struct sockaddr_in)
)
+ srca4->sin_len = sizeof (struct sockaddr_in)
;
dsta4->sin_len = sizeof (struct sockaddr_in);
#endif
}
dsta4->sin_len = sizeof (struct sockaddr_in);
#endif
}
@@
-1393,7
+1394,7
@@
receive_dns_request (void *cls GNUNET_UNUSED, struct GNUNET_MESH_Tunnel *tunnel,
struct sockaddr_in6 v6;
struct sockaddr *so;
socklen_t salen;
struct sockaddr_in6 v6;
struct sockaddr *so;
socklen_t salen;
-
+
if (dlen < sizeof (struct GNUNET_TUN_DnsHeader))
{
GNUNET_break_op (0);
if (dlen < sizeof (struct GNUNET_TUN_DnsHeader))
{
GNUNET_break_op (0);
@@
-1409,7
+1410,6
@@
receive_dns_request (void *cls GNUNET_UNUSED, struct GNUNET_MESH_Tunnel *tunnel,
memcpy (buf, dns, dlen);
dout = (struct GNUNET_TUN_DnsHeader*) buf;
dout->id = ts->my_id;
memcpy (buf, dns, dlen);
dout = (struct GNUNET_TUN_DnsHeader*) buf;
dout->id = ts->my_id;
-
memset (&v4, 0, sizeof (v4));
memset (&v6, 0, sizeof (v6));
if (1 == inet_pton (AF_INET, dns_exit, &v4.sin_addr))
memset (&v4, 0, sizeof (v4));
memset (&v6, 0, sizeof (v6));
if (1 == inet_pton (AF_INET, dns_exit, &v4.sin_addr))
@@
-1422,8
+1422,8
@@
receive_dns_request (void *cls GNUNET_UNUSED, struct GNUNET_MESH_Tunnel *tunnel,
#endif
so = (struct sockaddr *) &v4;
ts->dnsout = get_request_socket (AF_INET);
#endif
so = (struct sockaddr *) &v4;
ts->dnsout = get_request_socket (AF_INET);
- }
- if (1 == inet_pton (AF_INET6, dns_exit, &v6.sin6_addr))
+ }
+
else
if (1 == inet_pton (AF_INET6, dns_exit, &v6.sin6_addr))
{
salen = sizeof (v6);
v6.sin6_family = AF_INET6;
{
salen = sizeof (v6);
v6.sin6_family = AF_INET6;
@@
-1434,6
+1434,11
@@
receive_dns_request (void *cls GNUNET_UNUSED, struct GNUNET_MESH_Tunnel *tunnel,
so = (struct sockaddr *) &v6;
ts->dnsout = get_request_socket (AF_INET6);
}
so = (struct sockaddr *) &v6;
ts->dnsout = get_request_socket (AF_INET6);
}
+ else
+ {
+ GNUNET_break (0);
+ return GNUNET_SYSERR;
+ }
if (NULL == ts->dnsout)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
if (NULL == ts->dnsout)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
@@
-1541,8
+1546,12
@@
run (void *cls, struct GNUNET_SERVER_Handle *server,
&dns_exit)) ||
( (1 != inet_pton (AF_INET, dns_exit, &dns_exit4)) &&
(1 != inet_pton (AF_INET6, dns_exit, &dns_exit6)) ) ) )
&dns_exit)) ||
( (1 != inet_pton (AF_INET, dns_exit, &dns_exit4)) &&
(1 != inet_pton (AF_INET6, dns_exit, &dns_exit6)) ) ) )
+ {
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
_("Configured to provide DNS exit, but no valid DNS server configured!\n"));
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
_("Configured to provide DNS exit, but no valid DNS server configured!\n"));
+ GNUNET_free_non_null (dns_exit);
+ dns_exit = NULL;
+ }
helper_argv[0] = GNUNET_strdup ("gnunet-dns");
if (GNUNET_SYSERR ==
helper_argv[0] = GNUNET_strdup ("gnunet-dns");
if (GNUNET_SYSERR ==