Browse Source

Make sure to always zero an Address when it is created

Caleb James DeLisle 1 year ago
parent
commit
da79d887c8

+ 1 - 1
contrib/c/privatetopublic.c

@@ -47,7 +47,7 @@ static int usage(char* appName)
 int privatetopublic_main(int argc, char** argv);
 int privatetopublic_main(int argc, char** argv)
 {
-    struct Address address;
+    struct Address address = {0};
     uint8_t addressOut[40];
     uint8_t privateKey[32];
     uint8_t publicKeyBase32Out[53];

+ 1 - 1
crypto/Sign_admin.c

@@ -68,7 +68,7 @@ static void checkSig(Dict* args, void* vctx, String* txid, struct Allocator* req
         } else if (Sign_publicSigningKeyToCurve25519(curve25519key, publicSigningKey)) {
             Dict_putStringCC(out, "error", "not a valid curve25519 key", requestAlloc);
         } else {
-            struct Address addr;
+            struct Address addr = {0};
             Address_forKey(&addr, curve25519key);
             uint8_t ipv6[40];
             Address_printIp(ipv6, &addr);

+ 6 - 6
dht/Pathfinder.c

@@ -309,7 +309,7 @@ static Iface_DEFUN searchReq(struct Message* msg, struct Pathfinder_pvt* pf)
 
 static Iface_DEFUN peer(struct Message* msg, struct Pathfinder_pvt* pf)
 {
-    struct Address addr;
+    struct Address addr = {0};
     addressForNode(&addr, msg);
     String* str = Address_toString(&addr, Message_getAlloc(msg));
     Log_debug(pf->log, "Peer [%s]", str->bytes);
@@ -331,7 +331,7 @@ static Iface_DEFUN peer(struct Message* msg, struct Pathfinder_pvt* pf)
 
 static Iface_DEFUN peerGone(struct Message* msg, struct Pathfinder_pvt* pf)
 {
-    struct Address addr;
+    struct Address addr = {0};
     addressForNode(&addr, msg);
     String* str = Address_toString(&addr, Message_getAlloc(msg));
     Log_debug(pf->log, "Peer gone [%s]", str->bytes);
@@ -343,7 +343,7 @@ static Iface_DEFUN peerGone(struct Message* msg, struct Pathfinder_pvt* pf)
 
 static Iface_DEFUN session(struct Message* msg, struct Pathfinder_pvt* pf)
 {
-    struct Address addr;
+    struct Address addr = {0};
     addressForNode(&addr, msg);
     String* str = Address_toString(&addr, Message_getAlloc(msg));
     Log_debug(pf->log, "Session [%s]", str->bytes);
@@ -360,7 +360,7 @@ static Iface_DEFUN session(struct Message* msg, struct Pathfinder_pvt* pf)
 
 static Iface_DEFUN sessionEnded(struct Message* msg, struct Pathfinder_pvt* pf)
 {
-    struct Address addr;
+    struct Address addr = {0};
     addressForNode(&addr, msg);
     String* str = Address_toString(&addr, Message_getAlloc(msg));
     Log_debug(pf->log, "Session ended [%s]", str->bytes);
@@ -369,7 +369,7 @@ static Iface_DEFUN sessionEnded(struct Message* msg, struct Pathfinder_pvt* pf)
 
 static Iface_DEFUN discoveredPath(struct Message* msg, struct Pathfinder_pvt* pf)
 {
-    struct Address addr;
+    struct Address addr = {0};
     addressForNode(&addr, msg);
 
     // We're somehow aware of this path (even if it's unused)
@@ -406,7 +406,7 @@ static Iface_DEFUN handlePong(struct Message* msg, struct Pathfinder_pvt* pf)
 
 static Iface_DEFUN incomingMsg(struct Message* msg, struct Pathfinder_pvt* pf)
 {
-    struct Address addr;
+    struct Address addr = {0};
     struct RouteHeader* hdr = (struct RouteHeader*) msg->msgbytes;
     Er_assert(Message_eshift(msg, -(RouteHeader_SIZE + DataHeader_SIZE)));
     Bits_memcpy(addr.ip6.bytes, hdr->ip6, 16);

+ 1 - 1
dht/dhtcore/Janitor.c

@@ -371,7 +371,7 @@ static void peersResponseCallback(struct RouterModule_Promise* promise,
  */
 static void keyspaceMaintenance(struct Janitor_pvt* janitor)
 {
-    struct Address addr;
+    struct Address addr = {0};
     struct Address* selfAddr = janitor->nodeStore->selfAddress;
     if (!RumorMill_getNode(janitor->pub.dhtMill, &addr)) {
         // Try to fill the dhtMill for next time.

+ 1 - 2
net/InterfaceController.c

@@ -644,8 +644,7 @@ static Iface_DEFUN handleBeacon(
         Log_debug(ici->ic->logger, "RECV BEACON CONTENT[%s]", content);
     }
 
-    struct Address addr;
-    Bits_memset(&addr, 0, sizeof(struct Address));
+    struct Address addr = {0};
     Bits_memcpy(addr.key, beacon.publicKey, 32);
     addr.protocolVersion = Endian_bigEndianToHost32(beacon.version_be);
     Address_getPrefix(&addr);

+ 1 - 1
net/SessionManager_admin.c

@@ -72,7 +72,7 @@ static void outputSession(struct Context* context,
         return;
     }
 
-    struct Address addr;
+    struct Address addr = {0};
     Ca_getHerPubKey(session->caSession, addr.key);
     Address_getPrefix(&addr);
     uint8_t printedAddr[40];

+ 5 - 5
subnode/SubnodePathfinder.c

@@ -339,7 +339,7 @@ static void pingNode(struct SubnodePathfinder_pvt* pf, struct Address* addr)
 
 static Iface_DEFUN peer(struct Message* msg, struct SubnodePathfinder_pvt* pf)
 {
-    struct Address addr;
+    struct Address addr = {0};
     uint32_t metric = addressForNode(&addr, msg);
     String* str = Address_toString(&addr, Message_getAlloc(msg));
 
@@ -371,7 +371,7 @@ static Iface_DEFUN peer(struct Message* msg, struct SubnodePathfinder_pvt* pf)
 
 static Iface_DEFUN peerGone(struct Message* msg, struct SubnodePathfinder_pvt* pf)
 {
-    struct Address addr;
+    struct Address addr = {0};
     addressForNode(&addr, msg);
     AddrSet_remove(pf->myPeerAddrs, &addr, AddrSet_Match_BOTH);
     ReachabilityCollector_unreachable(pf->pub.rc, &addr);
@@ -380,7 +380,7 @@ static Iface_DEFUN peerGone(struct Message* msg, struct SubnodePathfinder_pvt* p
 
 static Iface_DEFUN session(struct Message* msg, struct SubnodePathfinder_pvt* pf)
 {
-    struct Address addr;
+    struct Address addr = {0};
     addressForNode(&addr, msg);
     String* str = Address_toString(&addr, Message_getAlloc(msg));
     Log_debug(pf->log, "Session [%s]", str->bytes);
@@ -390,7 +390,7 @@ static Iface_DEFUN session(struct Message* msg, struct SubnodePathfinder_pvt* pf
 
 static Iface_DEFUN sessionEnded(struct Message* msg, struct SubnodePathfinder_pvt* pf)
 {
-    struct Address addr;
+    struct Address addr = {0};
     addressForNode(&addr, msg);
     String* str = Address_toString(&addr, Message_getAlloc(msg));
     Log_debug(pf->log, "Session ended [%s]", str->bytes);
@@ -400,7 +400,7 @@ static Iface_DEFUN sessionEnded(struct Message* msg, struct SubnodePathfinder_pv
 
 static Iface_DEFUN discoveredPath(struct Message* msg, struct SubnodePathfinder_pvt* pf)
 {
-    //struct Address addr;
+    //struct Address addr = {0};
     //addressForNode(&addr, msg);
     //Log_debug(pf->log, "discoveredPath(%s)", Address_toString(&addr, Message_getAlloc(msg))->bytes);
     //if (addr.protocolVersion) { NodeCache_discoverNode(pf->nc, &addr); }

+ 1 - 1
subnode/SupernodeHunter.c

@@ -275,7 +275,7 @@ static void queryForAuthorized(struct SupernodeHunter_pvt* snp, struct Address*
 static void peerResponseOK(struct SwitchPinger_Response* resp, struct SupernodeHunter_pvt* snp)
 {
     ReachabilityCollector_lagSample(snp->rc, resp->label, resp->milliseconds);
-    struct Address snode;
+    struct Address snode = {0};
     Bits_memcpy(&snode, &resp->snode, sizeof(struct Address));
     if (!snode.path) {
         uint8_t label[20];

+ 1 - 1
subnode/SupernodeHunter_admin.c

@@ -28,7 +28,7 @@ struct Context {
 
 static struct Address* getAddr(Dict* args, struct Allocator* alloc)
 {
-    struct Address addr;
+    struct Address addr = {0};
     Bits_memset(&addr, 0, Address_SIZE);
     if (Key_parse(Dict_getStringC(args, "key"), addr.key, addr.ip6.bytes)) { return NULL; }
     return Address_clone(&addr, alloc);

+ 1 - 1
test/CryptoAddress_test.c

@@ -47,7 +47,7 @@ static const char ipv6[] = "fc68:cb2c:60db:cb96:19ac:34a8:fd34:03fc";
 int main()
 {
     /* verify public key */
-    struct Address address;
+    struct Address address = {0};
     crypto_scalarmult_curve25519_base(address.key, privateKey);
 
     AddressCalc_addressForPublicKey(address.ip6.bytes, address.key);