Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
checking if a unsigned int is >0 is a bad idea
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Mon, 27 Feb 2017 09:06:10 +0000 (10:06 +0100)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Mon, 27 Feb 2017 09:06:10 +0000 (10:06 +0100)
1-2 = 4294967295 is positive !! check 1 > 2 instead
revalidate tesh, previous one might have been silently false
should please sanitizer

examples/msg/dht-kademlia/dht-kademlia.c
examples/msg/dht-kademlia/dht-kademlia.tesh

index ad73ec1..c718db4 100644 (file)
@@ -159,8 +159,8 @@ unsigned int join(node_t node, unsigned int id_known)
   } while (answer_got == 0 && trial < max_join_trials);
   /* Second step: Send a FIND_NODE to a a random node in buckets */
   unsigned int bucket_id = routing_table_find_bucket(node->table, id_known)->id;
   } while (answer_got == 0 && trial < max_join_trials);
   /* Second step: Send a FIND_NODE to a a random node in buckets */
   unsigned int bucket_id = routing_table_find_bucket(node->table, id_known)->id;
-  for (i = 0; ((bucket_id - i) > 0 || (bucket_id + i) <= identifier_size) && i < JOIN_BUCKETS_QUERIES; i++) {
-    if (bucket_id - i > 0) {
+  for (i = 0; ((bucket_id  > i) || (bucket_id + i) <= identifier_size) && i < JOIN_BUCKETS_QUERIES; i++) {
+    if (bucket_id  > i) {
       unsigned int id_in_bucket = get_id_in_prefix(node->id, bucket_id - i);
       find_node(node, id_in_bucket, 0);
     }
       unsigned int id_in_bucket = get_id_in_prefix(node->id, bucket_id - i);
       find_node(node, id_in_bucket, 0);
     }
index c2666bb..17c786b 100644 (file)
@@ -19,14 +19,14 @@ $ $SG_TEST_EXENV ${bindir:=.}/dht-kademlia ${srcdir:=.}/cluster.xml ${srcdir:=.}
 > [  0.000000] (13:node@node-12.acme.org) Hi, I'm going to join the network with id 4095
 > [780.000000] ( 7:node@node-6.acme.org) 5/5 FIND_NODE have succeeded
 > [780.000000] ( 9:node@node-8.acme.org) 5/5 FIND_NODE have succeeded
 > [  0.000000] (13:node@node-12.acme.org) Hi, I'm going to join the network with id 4095
 > [780.000000] ( 7:node@node-6.acme.org) 5/5 FIND_NODE have succeeded
 > [780.000000] ( 9:node@node-8.acme.org) 5/5 FIND_NODE have succeeded
-> [780.000000] ( 3:node@node-2.acme.org) 5/5 FIND_NODE have succeeded
+> [780.000000] ( 3:node@node-2.acme.org) 6/6 FIND_NODE have succeeded
 > [780.000000] ( 2:node@node-1.acme.org) 6/6 FIND_NODE have succeeded
 > [780.000000] ( 2:node@node-1.acme.org) 6/6 FIND_NODE have succeeded
-> [780.000000] (11:node@node-10.acme.org) 6/6 FIND_NODE have succeeded
+> [780.000000] (11:node@node-10.acme.org) 5/5 FIND_NODE have succeeded
 > [780.000000] ( 1:node@node-0.acme.org) 7/7 FIND_NODE have succeeded
 > [780.000000] ( 5:node@node-4.acme.org) 6/6 FIND_NODE have succeeded
 > [780.000000] (13:node@node-12.acme.org) 6/6 FIND_NODE have succeeded
 > [780.000000] ( 1:node@node-0.acme.org) 7/7 FIND_NODE have succeeded
 > [780.000000] ( 5:node@node-4.acme.org) 6/6 FIND_NODE have succeeded
 > [780.000000] (13:node@node-12.acme.org) 6/6 FIND_NODE have succeeded
-> [780.000000] ( 8:node@node-7.acme.org) 6/6 FIND_NODE have succeeded
-> [780.000000] ( 6:node@node-5.acme.org) 6/6 FIND_NODE have succeeded
+> [780.000000] ( 8:node@node-7.acme.org) 5/5 FIND_NODE have succeeded
+> [780.000000] ( 6:node@node-5.acme.org) 5/5 FIND_NODE have succeeded
 > [780.000000] (10:node@node-9.acme.org) 5/5 FIND_NODE have succeeded
 > [780.000000] (12:node@node-11.acme.org) 6/6 FIND_NODE have succeeded
 > [780.000000] ( 4:node@node-3.acme.org) 5/5 FIND_NODE have succeeded
 > [780.000000] (10:node@node-9.acme.org) 5/5 FIND_NODE have succeeded
 > [780.000000] (12:node@node-11.acme.org) 6/6 FIND_NODE have succeeded
 > [780.000000] ( 4:node@node-3.acme.org) 5/5 FIND_NODE have succeeded