diff options
author | Christian Grothoff <christian@grothoff.org> | 2013-10-11 16:29:47 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2013-10-11 16:29:47 +0000 |
commit | 024c76de62aecbb528417a7c2c6f03a2e2584705 (patch) | |
tree | 8f34f3caa459d887ebabef05a0073a49c42ada18 /src/vpn | |
parent | 4731f3f3f673f89080461937fc2222ada419cf5e (diff) | |
download | gnunet-024c76de62aecbb528417a7c2c6f03a2e2584705.tar.gz gnunet-024c76de62aecbb528417a7c2c6f03a2e2584705.zip |
-fixing minor memleaks
Diffstat (limited to 'src/vpn')
-rw-r--r-- | src/vpn/gnunet-service-vpn.c | 66 |
1 files changed, 37 insertions, 29 deletions
diff --git a/src/vpn/gnunet-service-vpn.c b/src/vpn/gnunet-service-vpn.c index 4ecd0dfc1..bba321f8c 100644 --- a/src/vpn/gnunet-service-vpn.c +++ b/src/vpn/gnunet-service-vpn.c | |||
@@ -167,7 +167,7 @@ struct DestinationEntry | |||
167 | * Address if af is AF_INET. | 167 | * Address if af is AF_INET. |
168 | */ | 168 | */ |
169 | struct in_addr v4; | 169 | struct in_addr v4; |
170 | 170 | ||
171 | /** | 171 | /** |
172 | * Address if af is AF_INET6. | 172 | * Address if af is AF_INET6. |
173 | */ | 173 | */ |
@@ -1222,7 +1222,7 @@ route_packet (struct DestinationEntry *destination, | |||
1222 | tim = (struct GNUNET_EXIT_TcpInternetStartMessage *) &tnq[1]; | 1222 | tim = (struct GNUNET_EXIT_TcpInternetStartMessage *) &tnq[1]; |
1223 | tim->header.size = htons ((uint16_t) mlen); | 1223 | tim->header.size = htons ((uint16_t) mlen); |
1224 | tim->header.type = htons (GNUNET_MESSAGE_TYPE_VPN_TCP_TO_INTERNET_START); | 1224 | tim->header.type = htons (GNUNET_MESSAGE_TYPE_VPN_TCP_TO_INTERNET_START); |
1225 | tim->af = htonl (destination->details.exit_destination.af); | 1225 | tim->af = htonl (destination->details.exit_destination.af); |
1226 | tim->tcp_header = *tcp; | 1226 | tim->tcp_header = *tcp; |
1227 | switch (destination->details.exit_destination.af) | 1227 | switch (destination->details.exit_destination.af) |
1228 | { | 1228 | { |
@@ -1331,7 +1331,7 @@ route_packet (struct DestinationEntry *destination, | |||
1331 | gettext_noop ("# ICMPv6 packets dropped (not allowed)"), | 1331 | gettext_noop ("# ICMPv6 packets dropped (not allowed)"), |
1332 | 1, GNUNET_NO); | 1332 | 1, GNUNET_NO); |
1333 | return; | 1333 | return; |
1334 | } | 1334 | } |
1335 | /* end of AF_INET6 */ | 1335 | /* end of AF_INET6 */ |
1336 | break; | 1336 | break; |
1337 | default: | 1337 | default: |
@@ -1375,11 +1375,11 @@ route_packet (struct DestinationEntry *destination, | |||
1375 | case AF_INET: | 1375 | case AF_INET: |
1376 | switch (icmp->type) | 1376 | switch (icmp->type) |
1377 | { | 1377 | { |
1378 | case GNUNET_TUN_ICMPTYPE_ECHO_REPLY: | 1378 | case GNUNET_TUN_ICMPTYPE_ECHO_REPLY: |
1379 | if (destination->details.exit_destination.af == AF_INET6) | 1379 | if (destination->details.exit_destination.af == AF_INET6) |
1380 | iim->icmp_header.type = GNUNET_TUN_ICMPTYPE6_ECHO_REPLY; | 1380 | iim->icmp_header.type = GNUNET_TUN_ICMPTYPE6_ECHO_REPLY; |
1381 | break; | 1381 | break; |
1382 | case GNUNET_TUN_ICMPTYPE_ECHO_REQUEST: | 1382 | case GNUNET_TUN_ICMPTYPE_ECHO_REQUEST: |
1383 | if (destination->details.exit_destination.af == AF_INET6) | 1383 | if (destination->details.exit_destination.af == AF_INET6) |
1384 | iim->icmp_header.type = GNUNET_TUN_ICMPTYPE6_ECHO_REQUEST; | 1384 | iim->icmp_header.type = GNUNET_TUN_ICMPTYPE6_ECHO_REQUEST; |
1385 | break; | 1385 | break; |
@@ -1389,7 +1389,7 @@ route_packet (struct DestinationEntry *destination, | |||
1389 | /* throw away IP-payload, exit will have to make it up anyway */ | 1389 | /* throw away IP-payload, exit will have to make it up anyway */ |
1390 | payload_length = sizeof (struct GNUNET_TUN_IcmpHeader); | 1390 | payload_length = sizeof (struct GNUNET_TUN_IcmpHeader); |
1391 | break; | 1391 | break; |
1392 | case GNUNET_TUN_ICMPTYPE_TIME_EXCEEDED: | 1392 | case GNUNET_TUN_ICMPTYPE_TIME_EXCEEDED: |
1393 | if (destination->details.exit_destination.af == AF_INET6) | 1393 | if (destination->details.exit_destination.af == AF_INET6) |
1394 | iim->icmp_header.type = GNUNET_TUN_ICMPTYPE6_TIME_EXCEEDED; | 1394 | iim->icmp_header.type = GNUNET_TUN_ICMPTYPE6_TIME_EXCEEDED; |
1395 | /* throw away IP-payload, exit will have to make it up anyway */ | 1395 | /* throw away IP-payload, exit will have to make it up anyway */ |
@@ -1411,7 +1411,7 @@ route_packet (struct DestinationEntry *destination, | |||
1411 | GNUNET_STATISTICS_update (stats, | 1411 | GNUNET_STATISTICS_update (stats, |
1412 | gettext_noop ("# ICMPv4 packets dropped (type not allowed)"), | 1412 | gettext_noop ("# ICMPv4 packets dropped (type not allowed)"), |
1413 | 1, GNUNET_NO); | 1413 | 1, GNUNET_NO); |
1414 | GNUNET_free (tnq); | 1414 | GNUNET_free (tnq); |
1415 | return; | 1415 | return; |
1416 | } | 1416 | } |
1417 | /* end of AF_INET */ | 1417 | /* end of AF_INET */ |
@@ -1467,7 +1467,7 @@ route_packet (struct DestinationEntry *destination, | |||
1467 | GNUNET_STATISTICS_update (stats, | 1467 | GNUNET_STATISTICS_update (stats, |
1468 | gettext_noop ("# ICMPv6 packets dropped (type not allowed)"), | 1468 | gettext_noop ("# ICMPv6 packets dropped (type not allowed)"), |
1469 | 1, GNUNET_NO); | 1469 | 1, GNUNET_NO); |
1470 | GNUNET_free (tnq); | 1470 | GNUNET_free (tnq); |
1471 | return; | 1471 | return; |
1472 | } | 1472 | } |
1473 | /* end of AF_INET6 */ | 1473 | /* end of AF_INET6 */ |
@@ -1564,7 +1564,7 @@ message_token (void *cls, | |||
1564 | if (NULL == de) | 1564 | if (NULL == de) |
1565 | { | 1565 | { |
1566 | char buf[INET6_ADDRSTRLEN]; | 1566 | char buf[INET6_ADDRSTRLEN]; |
1567 | 1567 | ||
1568 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 1568 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
1569 | _("Packet received for unmapped destination `%s' (dropping it)\n"), | 1569 | _("Packet received for unmapped destination `%s' (dropping it)\n"), |
1570 | inet_ntop (AF_INET6, | 1570 | inet_ntop (AF_INET6, |
@@ -1576,8 +1576,8 @@ message_token (void *cls, | |||
1576 | route_packet (de, | 1576 | route_packet (de, |
1577 | AF_INET6, | 1577 | AF_INET6, |
1578 | pkt6->next_header, | 1578 | pkt6->next_header, |
1579 | &pkt6->source_address, | 1579 | &pkt6->source_address, |
1580 | &pkt6->destination_address, | 1580 | &pkt6->destination_address, |
1581 | &pkt6[1], | 1581 | &pkt6[1], |
1582 | mlen - sizeof (struct GNUNET_TUN_IPv6Header)); | 1582 | mlen - sizeof (struct GNUNET_TUN_IPv6Header)); |
1583 | } | 1583 | } |
@@ -1600,7 +1600,7 @@ message_token (void *cls, | |||
1600 | if (NULL == de) | 1600 | if (NULL == de) |
1601 | { | 1601 | { |
1602 | char buf[INET_ADDRSTRLEN]; | 1602 | char buf[INET_ADDRSTRLEN]; |
1603 | 1603 | ||
1604 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 1604 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
1605 | _("Packet received for unmapped destination `%s' (dropping it)\n"), | 1605 | _("Packet received for unmapped destination `%s' (dropping it)\n"), |
1606 | inet_ntop (AF_INET, | 1606 | inet_ntop (AF_INET, |
@@ -1612,14 +1612,14 @@ message_token (void *cls, | |||
1612 | if (pkt4->header_length * 4 != sizeof (struct GNUNET_TUN_IPv4Header)) | 1612 | if (pkt4->header_length * 4 != sizeof (struct GNUNET_TUN_IPv4Header)) |
1613 | { | 1613 | { |
1614 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 1614 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
1615 | _("Received IPv4 packet with options (dropping it)\n")); | 1615 | _("Received IPv4 packet with options (dropping it)\n")); |
1616 | return GNUNET_OK; | 1616 | return GNUNET_OK; |
1617 | } | 1617 | } |
1618 | route_packet (de, | 1618 | route_packet (de, |
1619 | AF_INET, | 1619 | AF_INET, |
1620 | pkt4->protocol, | 1620 | pkt4->protocol, |
1621 | &pkt4->source_address, | 1621 | &pkt4->source_address, |
1622 | &pkt4->destination_address, | 1622 | &pkt4->destination_address, |
1623 | &pkt4[1], | 1623 | &pkt4[1], |
1624 | mlen - sizeof (struct GNUNET_TUN_IPv4Header)); | 1624 | mlen - sizeof (struct GNUNET_TUN_IPv4Header)); |
1625 | } | 1625 | } |
@@ -1772,7 +1772,7 @@ receive_icmp_back (void *cls, | |||
1772 | do ICMP PT (translate ICMP types) */ | 1772 | do ICMP PT (translate ICMP types) */ |
1773 | switch (ntohl (i2v->af)) | 1773 | switch (ntohl (i2v->af)) |
1774 | { | 1774 | { |
1775 | case AF_INET: | 1775 | case AF_INET: |
1776 | switch (icmp->type) | 1776 | switch (icmp->type) |
1777 | { | 1777 | { |
1778 | case GNUNET_TUN_ICMPTYPE_ECHO_REPLY: | 1778 | case GNUNET_TUN_ICMPTYPE_ECHO_REPLY: |
@@ -1780,11 +1780,11 @@ receive_icmp_back (void *cls, | |||
1780 | break; | 1780 | break; |
1781 | case GNUNET_TUN_ICMPTYPE_DESTINATION_UNREACHABLE: | 1781 | case GNUNET_TUN_ICMPTYPE_DESTINATION_UNREACHABLE: |
1782 | case GNUNET_TUN_ICMPTYPE_SOURCE_QUENCH: | 1782 | case GNUNET_TUN_ICMPTYPE_SOURCE_QUENCH: |
1783 | case GNUNET_TUN_ICMPTYPE_TIME_EXCEEDED: | 1783 | case GNUNET_TUN_ICMPTYPE_TIME_EXCEEDED: |
1784 | { | 1784 | { |
1785 | struct GNUNET_TUN_IPv4Header *ipp = (struct GNUNET_TUN_IPv4Header *) &icmp[1]; | 1785 | struct GNUNET_TUN_IPv4Header *ipp = (struct GNUNET_TUN_IPv4Header *) &icmp[1]; |
1786 | struct GNUNET_TUN_UdpHeader *udp = (struct GNUNET_TUN_UdpHeader *) &ipp[1]; | 1786 | struct GNUNET_TUN_UdpHeader *udp = (struct GNUNET_TUN_UdpHeader *) &ipp[1]; |
1787 | 1787 | ||
1788 | if (mlen != 0) | 1788 | if (mlen != 0) |
1789 | { | 1789 | { |
1790 | /* sender did not strip ICMP payload? */ | 1790 | /* sender did not strip ICMP payload? */ |
@@ -1814,7 +1814,7 @@ receive_icmp_back (void *cls, | |||
1814 | { | 1814 | { |
1815 | struct GNUNET_TUN_IPv4Header *ipp = (struct GNUNET_TUN_IPv4Header *) &icmp[1]; | 1815 | struct GNUNET_TUN_IPv4Header *ipp = (struct GNUNET_TUN_IPv4Header *) &icmp[1]; |
1816 | struct GNUNET_TUN_UdpHeader *udp = (struct GNUNET_TUN_UdpHeader *) &ipp[1]; | 1816 | struct GNUNET_TUN_UdpHeader *udp = (struct GNUNET_TUN_UdpHeader *) &ipp[1]; |
1817 | 1817 | ||
1818 | if (mlen != 0) | 1818 | if (mlen != 0) |
1819 | { | 1819 | { |
1820 | /* sender did not strip ICMP payload? */ | 1820 | /* sender did not strip ICMP payload? */ |
@@ -1831,7 +1831,7 @@ receive_icmp_back (void *cls, | |||
1831 | { | 1831 | { |
1832 | struct GNUNET_TUN_IPv4Header *ipp = (struct GNUNET_TUN_IPv4Header *) &icmp[1]; | 1832 | struct GNUNET_TUN_IPv4Header *ipp = (struct GNUNET_TUN_IPv4Header *) &icmp[1]; |
1833 | struct GNUNET_TUN_UdpHeader *udp = (struct GNUNET_TUN_UdpHeader *) &ipp[1]; | 1833 | struct GNUNET_TUN_UdpHeader *udp = (struct GNUNET_TUN_UdpHeader *) &ipp[1]; |
1834 | 1834 | ||
1835 | if (mlen != 0) | 1835 | if (mlen != 0) |
1836 | { | 1836 | { |
1837 | /* sender did not strip ICMP payload? */ | 1837 | /* sender did not strip ICMP payload? */ |
@@ -1867,7 +1867,7 @@ receive_icmp_back (void *cls, | |||
1867 | default: | 1867 | default: |
1868 | GNUNET_break_op (0); | 1868 | GNUNET_break_op (0); |
1869 | return GNUNET_SYSERR; | 1869 | return GNUNET_SYSERR; |
1870 | } | 1870 | } |
1871 | msg->size = htons (size); | 1871 | msg->size = htons (size); |
1872 | GNUNET_TUN_calculate_icmp_checksum (icmp, | 1872 | GNUNET_TUN_calculate_icmp_checksum (icmp, |
1873 | &i2v[1], | 1873 | &i2v[1], |
@@ -1910,7 +1910,7 @@ receive_icmp_back (void *cls, | |||
1910 | do ICMP PT (translate ICMP types) */ | 1910 | do ICMP PT (translate ICMP types) */ |
1911 | switch (ntohl (i2v->af)) | 1911 | switch (ntohl (i2v->af)) |
1912 | { | 1912 | { |
1913 | case AF_INET: | 1913 | case AF_INET: |
1914 | /* ICMP PT 4-to-6 and possibly making up payloads */ | 1914 | /* ICMP PT 4-to-6 and possibly making up payloads */ |
1915 | switch (icmp->type) | 1915 | switch (icmp->type) |
1916 | { | 1916 | { |
@@ -1925,7 +1925,7 @@ receive_icmp_back (void *cls, | |||
1925 | { | 1925 | { |
1926 | struct GNUNET_TUN_IPv6Header *ipp = (struct GNUNET_TUN_IPv6Header *) &icmp[1]; | 1926 | struct GNUNET_TUN_IPv6Header *ipp = (struct GNUNET_TUN_IPv6Header *) &icmp[1]; |
1927 | struct GNUNET_TUN_UdpHeader *udp = (struct GNUNET_TUN_UdpHeader *) &ipp[1]; | 1927 | struct GNUNET_TUN_UdpHeader *udp = (struct GNUNET_TUN_UdpHeader *) &ipp[1]; |
1928 | 1928 | ||
1929 | if (mlen != 0) | 1929 | if (mlen != 0) |
1930 | { | 1930 | { |
1931 | /* sender did not strip ICMP payload? */ | 1931 | /* sender did not strip ICMP payload? */ |
@@ -1937,12 +1937,12 @@ receive_icmp_back (void *cls, | |||
1937 | make_up_icmpv6_payload (ts, ipp, udp); | 1937 | make_up_icmpv6_payload (ts, ipp, udp); |
1938 | } | 1938 | } |
1939 | break; | 1939 | break; |
1940 | case GNUNET_TUN_ICMPTYPE_TIME_EXCEEDED: | 1940 | case GNUNET_TUN_ICMPTYPE_TIME_EXCEEDED: |
1941 | icmp->type = GNUNET_TUN_ICMPTYPE6_TIME_EXCEEDED; | 1941 | icmp->type = GNUNET_TUN_ICMPTYPE6_TIME_EXCEEDED; |
1942 | { | 1942 | { |
1943 | struct GNUNET_TUN_IPv6Header *ipp = (struct GNUNET_TUN_IPv6Header *) &icmp[1]; | 1943 | struct GNUNET_TUN_IPv6Header *ipp = (struct GNUNET_TUN_IPv6Header *) &icmp[1]; |
1944 | struct GNUNET_TUN_UdpHeader *udp = (struct GNUNET_TUN_UdpHeader *) &ipp[1]; | 1944 | struct GNUNET_TUN_UdpHeader *udp = (struct GNUNET_TUN_UdpHeader *) &ipp[1]; |
1945 | 1945 | ||
1946 | if (mlen != 0) | 1946 | if (mlen != 0) |
1947 | { | 1947 | { |
1948 | /* sender did not strip ICMP payload? */ | 1948 | /* sender did not strip ICMP payload? */ |
@@ -1957,7 +1957,7 @@ receive_icmp_back (void *cls, | |||
1957 | case GNUNET_TUN_ICMPTYPE_SOURCE_QUENCH: | 1957 | case GNUNET_TUN_ICMPTYPE_SOURCE_QUENCH: |
1958 | GNUNET_STATISTICS_update (stats, | 1958 | GNUNET_STATISTICS_update (stats, |
1959 | gettext_noop ("# ICMPv4 packets dropped (impossible PT to v6)"), | 1959 | gettext_noop ("# ICMPv4 packets dropped (impossible PT to v6)"), |
1960 | 1, GNUNET_NO); | 1960 | 1, GNUNET_NO); |
1961 | return GNUNET_OK; | 1961 | return GNUNET_OK; |
1962 | default: | 1962 | default: |
1963 | GNUNET_break_op (0); | 1963 | GNUNET_break_op (0); |
@@ -1978,7 +1978,7 @@ receive_icmp_back (void *cls, | |||
1978 | { | 1978 | { |
1979 | struct GNUNET_TUN_IPv6Header *ipp = (struct GNUNET_TUN_IPv6Header *) &icmp[1]; | 1979 | struct GNUNET_TUN_IPv6Header *ipp = (struct GNUNET_TUN_IPv6Header *) &icmp[1]; |
1980 | struct GNUNET_TUN_UdpHeader *udp = (struct GNUNET_TUN_UdpHeader *) &ipp[1]; | 1980 | struct GNUNET_TUN_UdpHeader *udp = (struct GNUNET_TUN_UdpHeader *) &ipp[1]; |
1981 | 1981 | ||
1982 | if (mlen != 0) | 1982 | if (mlen != 0) |
1983 | { | 1983 | { |
1984 | /* sender did not strip ICMP payload? */ | 1984 | /* sender did not strip ICMP payload? */ |
@@ -2358,7 +2358,7 @@ allocate_v4_address (struct in_addr *v4) | |||
2358 | } | 2358 | } |
2359 | /* Pick random IPv4 address within the subnet, except 'addr' or 'mask' itself */ | 2359 | /* Pick random IPv4 address within the subnet, except 'addr' or 'mask' itself */ |
2360 | rnd.s_addr = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, | 2360 | rnd.s_addr = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, |
2361 | UINT32_MAX); | 2361 | UINT32_MAX); |
2362 | v4->s_addr = (addr.s_addr | rnd.s_addr) & mask.s_addr; | 2362 | v4->s_addr = (addr.s_addr | rnd.s_addr) & mask.s_addr; |
2363 | get_destination_key_from_ip (AF_INET, | 2363 | get_destination_key_from_ip (AF_INET, |
2364 | v4, | 2364 | v4, |
@@ -2550,7 +2550,7 @@ allocate_response_ip (int *result_af, | |||
2550 | return GNUNET_SYSERR; | 2550 | return GNUNET_SYSERR; |
2551 | } | 2551 | } |
2552 | return GNUNET_OK; | 2552 | return GNUNET_OK; |
2553 | } | 2553 | } |
2554 | 2554 | ||
2555 | 2555 | ||
2556 | /** | 2556 | /** |
@@ -2975,6 +2975,7 @@ run (void *cls, | |||
2975 | return; | 2975 | return; |
2976 | } | 2976 | } |
2977 | vpn_argv[1] = ifname; | 2977 | vpn_argv[1] = ifname; |
2978 | ipv6addr = NULL; | ||
2978 | if (GNUNET_OK == GNUNET_NETWORK_test_pf (PF_INET6)) | 2979 | if (GNUNET_OK == GNUNET_NETWORK_test_pf (PF_INET6)) |
2979 | { | 2980 | { |
2980 | if ( (GNUNET_SYSERR == | 2981 | if ( (GNUNET_SYSERR == |
@@ -2985,15 +2986,18 @@ run (void *cls, | |||
2985 | GNUNET_log_config_invalid (GNUNET_ERROR_TYPE_ERROR, "VPN", "IPV6ADDR", | 2986 | GNUNET_log_config_invalid (GNUNET_ERROR_TYPE_ERROR, "VPN", "IPV6ADDR", |
2986 | _("Must specify valid IPv6 address")); | 2987 | _("Must specify valid IPv6 address")); |
2987 | GNUNET_SCHEDULER_shutdown (); | 2988 | GNUNET_SCHEDULER_shutdown (); |
2989 | GNUNET_free_non_null (ipv6addr); | ||
2988 | return; | 2990 | return; |
2989 | } | 2991 | } |
2990 | vpn_argv[2] = ipv6addr; | 2992 | vpn_argv[2] = ipv6addr; |
2993 | ipv6prefix_s = NULL; | ||
2991 | if (GNUNET_SYSERR == | 2994 | if (GNUNET_SYSERR == |
2992 | GNUNET_CONFIGURATION_get_value_string (cfg, "VPN", "IPV6PREFIX", | 2995 | GNUNET_CONFIGURATION_get_value_string (cfg, "VPN", "IPV6PREFIX", |
2993 | &ipv6prefix_s)) | 2996 | &ipv6prefix_s)) |
2994 | { | 2997 | { |
2995 | GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR, "VPN", "IPV6PREFIX"); | 2998 | GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR, "VPN", "IPV6PREFIX"); |
2996 | GNUNET_SCHEDULER_shutdown (); | 2999 | GNUNET_SCHEDULER_shutdown (); |
3000 | GNUNET_free_non_null (ipv6prefix_s); | ||
2997 | return; | 3001 | return; |
2998 | } | 3002 | } |
2999 | vpn_argv[3] = ipv6prefix_s; | 3003 | vpn_argv[3] = ipv6prefix_s; |
@@ -3018,6 +3022,7 @@ run (void *cls, | |||
3018 | } | 3022 | } |
3019 | if (GNUNET_OK == GNUNET_NETWORK_test_pf (PF_INET)) | 3023 | if (GNUNET_OK == GNUNET_NETWORK_test_pf (PF_INET)) |
3020 | { | 3024 | { |
3025 | ipv4addr = NULL; | ||
3021 | if ( (GNUNET_SYSERR == | 3026 | if ( (GNUNET_SYSERR == |
3022 | GNUNET_CONFIGURATION_get_value_string (cfg, "vpn", "IPV4ADDR", | 3027 | GNUNET_CONFIGURATION_get_value_string (cfg, "vpn", "IPV4ADDR", |
3023 | &ipv4addr) || | 3028 | &ipv4addr) || |
@@ -3026,9 +3031,11 @@ run (void *cls, | |||
3026 | GNUNET_log_config_invalid (GNUNET_ERROR_TYPE_ERROR, "VPN", "IPV4ADDR", | 3031 | GNUNET_log_config_invalid (GNUNET_ERROR_TYPE_ERROR, "VPN", "IPV4ADDR", |
3027 | _("Must specify valid IPv4 address")); | 3032 | _("Must specify valid IPv4 address")); |
3028 | GNUNET_SCHEDULER_shutdown (); | 3033 | GNUNET_SCHEDULER_shutdown (); |
3034 | GNUNET_free_non_null (ipv4addr); | ||
3029 | return; | 3035 | return; |
3030 | } | 3036 | } |
3031 | vpn_argv[4] = ipv4addr; | 3037 | vpn_argv[4] = ipv4addr; |
3038 | ipv4mask = NULL; | ||
3032 | if ( (GNUNET_SYSERR == | 3039 | if ( (GNUNET_SYSERR == |
3033 | GNUNET_CONFIGURATION_get_value_string (cfg, "vpn", "IPV4MASK", | 3040 | GNUNET_CONFIGURATION_get_value_string (cfg, "vpn", "IPV4MASK", |
3034 | &ipv4mask) || | 3041 | &ipv4mask) || |
@@ -3037,6 +3044,7 @@ run (void *cls, | |||
3037 | GNUNET_log_config_invalid (GNUNET_ERROR_TYPE_ERROR, "VPN", "IPV4MASK", | 3044 | GNUNET_log_config_invalid (GNUNET_ERROR_TYPE_ERROR, "VPN", "IPV4MASK", |
3038 | _("Must specify valid IPv4 mask")); | 3045 | _("Must specify valid IPv4 mask")); |
3039 | GNUNET_SCHEDULER_shutdown (); | 3046 | GNUNET_SCHEDULER_shutdown (); |
3047 | GNUNET_free_non_null (ipv4mask); | ||
3040 | return; | 3048 | return; |
3041 | } | 3049 | } |
3042 | vpn_argv[5] = ipv4mask; | 3050 | vpn_argv[5] = ipv4mask; |