gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r14138 - gnunet/src/vpn


From: gnunet
Subject: [GNUnet-SVN] r14138 - gnunet/src/vpn
Date: Mon, 10 Jan 2011 22:41:35 +0100

Author: toelke
Date: 2011-01-10 22:41:35 +0100 (Mon, 10 Jan 2011)
New Revision: 14138

Modified:
   gnunet/src/vpn/gnunet-daemon-vpn.c
   gnunet/src/vpn/gnunet-daemon-vpn.h
Log:
fix two "invalid read"s

Modified: gnunet/src/vpn/gnunet-daemon-vpn.c
===================================================================
--- gnunet/src/vpn/gnunet-daemon-vpn.c  2011-01-10 21:41:33 UTC (rev 14137)
+++ gnunet/src/vpn/gnunet-daemon-vpn.c  2011-01-10 21:41:35 UTC (rev 14138)
@@ -255,10 +255,11 @@
 
        uint16_t namelen = strlen((char*)pkt->data+12)+1;
 
-       struct map_entry* value = GNUNET_malloc(sizeof(struct 
GNUNET_vpn_service_descriptor) + 2 + 8 + namelen);
+       struct map_entry* value = GNUNET_malloc(sizeof(struct map_entry) + 
namelen);
+       char* name = (char*)(value +1);
 
        value->namelen = namelen;
-       memcpy(value->name, pkt->data+12, namelen);
+       memcpy(name, pkt->data+12, namelen);
 
        memcpy(&value->desc, &pkt->service_descr, sizeof(struct 
GNUNET_vpn_service_descriptor));
 
@@ -318,13 +319,14 @@
          }
 
         unsigned short namelen = htons(map_entry->namelen);
-       char* name = map_entry->name;
+       char* name = (char*)(map_entry + 1);
 
        list = GNUNET_malloc(2*sizeof(struct answer_packet_list*) + offset + 2 
+ ntohs(namelen));
 
        struct answer_packet* rpkt = &list->pkt;
 
-       memcpy(rpkt, pkt, offset);
+       /* The offset points to the first byte belonging to the address */
+       memcpy(rpkt, pkt, offset - 1);
 
        rpkt->subtype = GNUNET_DNS_ANSWER_TYPE_IP;
        rpkt->hdr.size = ntohs(offset + 2 + ntohs(namelen));

Modified: gnunet/src/vpn/gnunet-daemon-vpn.h
===================================================================
--- gnunet/src/vpn/gnunet-daemon-vpn.h  2011-01-10 21:41:33 UTC (rev 14137)
+++ gnunet/src/vpn/gnunet-daemon-vpn.h  2011-01-10 21:41:35 UTC (rev 14138)
@@ -77,9 +77,8 @@
     uint16_t namelen;
     uint64_t additional_ports;
     /**
-     * In DNS-Format!
+     * After this struct the name is located in DNS-Format!
      */
-    char name[1];
 };
 
 #endif /* end of include guard: GNUNET-DAEMON-VPN_H */




reply via email to

[Prev in Thread] Current Thread [Next in Thread]