FIX small bugs in MID deserialization and tc deserialization
authorHenning Rogge <hrogge@googlemail.com>
Tue, 21 Jul 2009 16:15:50 +0000 (18:15 +0200)
committerHenning Rogge <hrogge@googlemail.com>
Tue, 21 Jul 2009 16:15:50 +0000 (18:15 +0200)
src/hna_set.c
src/mid_set.c
src/tc_set.c

index b417af3..7a9a5ae 100644 (file)
@@ -319,7 +319,7 @@ olsr_input_hna(union olsr_message *msg, struct interface *in_if __attribute__ ((
    */
   curr_end = (uint8_t *)msg + msg_size;
 
-  while (curr + olsr_cnf->ipsize < curr_end) {
+  while (curr + 2*olsr_cnf->ipsize <= curr_end) {
 
     pkt_get_ipaddress(&curr, &prefix.prefix);
     pkt_get_prefixlen(&curr, &prefix.prefix_len);
index 4407b92..654fff1 100644 (file)
@@ -442,11 +442,8 @@ olsr_print_mid_set(void)
   OLSR_INFO(LOG_MID, "\n--- %s ------------------------------------------------- MID\n\n", olsr_wallclock_string());
 
   OLSR_FOR_ALL_TC_ENTRIES(tc) {
-    bool first = true;
     OLSR_FOR_ALL_TC_MID_ENTRIES(tc, alias) {
-      OLSR_INFO_NH(LOG_MID, "%-15s: %s\n",
-                   first ? olsr_ip_to_string(&buf1, &tc->addr) : "", olsr_ip_to_string(&buf2, &alias->mid_alias_addr));
-      first = false;
+      OLSR_INFO_NH(LOG_MID, "%-15s: %s\n", olsr_ip_to_string(&buf1, &tc->addr), olsr_ip_to_string(&buf2, &alias->mid_alias_addr));
     } OLSR_FOR_ALL_TC_MID_ENTRIES_END(tc, alias);
   } OLSR_FOR_ALL_TC_ENTRIES_END(tc);
 #endif
@@ -519,7 +516,7 @@ olsr_input_mid(union olsr_message *msg, struct interface *input_if __attribute__
   /*
    * Now walk the list of alias advertisements one by one.
    */
-  while (curr + olsr_cnf->ipsize < end) {
+  while (curr + olsr_cnf->ipsize <= end) {
     pkt_get_ipaddress(&curr, &alias);
     olsr_update_mid_entry(&originator, &alias, vtime, msg_seq);
   }
index 4da679a..513cbd6 100644 (file)
@@ -860,7 +860,7 @@ olsr_input_tc(union olsr_message * msg, struct interface * input_if __attribute_
   limit = (unsigned char *)msg + size;
   borderSet = 0;
   relevantTc = false;
-  while (curr < limit) {
+  while (curr + olsr_cnf->ipsize + olsr_sizeof_TCLQ() <= limit) {
     if (olsr_tc_update_edge(tc, ansn, &curr, &upper_border_ip)) {
       relevantTc = true;
     }