Fix memory-leak (and superfluous copy)
authorPhilipp Tölke <toelke@in.tum.de>
Wed, 17 Nov 2010 08:55:34 +0000 (08:55 +0000)
committerPhilipp Tölke <toelke@in.tum.de>
Wed, 17 Nov 2010 08:55:34 +0000 (08:55 +0000)
src/vpn/gnunet-daemon-vpn.c

index f447eaf41a505d58620a9f117e5f6a90460a0f7f..a2d43fb2f3c805b9fc1d31d15c3d0923da9d04c1 100644 (file)
@@ -422,11 +422,14 @@ message_token(void *cls,
            break;
          case 0x3a:
            /* ICMPv6 */
-           pkt6_icmp = GNUNET_malloc(ntohs(pkt6->shdr.size));
-           memcpy(pkt6_icmp, pkt6, ntohs(pkt6->shdr.size));
+           pkt6_icmp = (struct ip6_icmp*)pkt6;
            /* If this packet is an icmp-echo-request and a mapping exists, answer */
            if (pkt6_icmp->icmp_hdr.type == 0x80 && address_mapping_exists(pkt6->ip6_hdr.sadr))
+             {
+               pkt6_icmp = GNUNET_malloc(ntohs(pkt6->shdr.size));
+               memcpy(pkt6_icmp, pkt6, ntohs(pkt6->shdr.size));
                GNUNET_SCHEDULER_add_now(&send_icmp_response, pkt6_icmp);
+             }
            break;
          }
       }