Bladeren bron

Make sure we don't run off the end of the list

svn:r16523
Peter Palfrader 16 jaren geleden
bovenliggende
commit
34e083dde1
1 gewijzigde bestanden met toevoegingen van 9 en 6 verwijderingen
  1. 9 6
      src/or/policies.c

+ 9 - 6
src/or/policies.c

@@ -1015,13 +1015,14 @@ policy_summary_accept(smartlist_t *summary,
                       uint16_t prt_min, uint16_t prt_max)
 {
   int i = policy_summary_split(summary, prt_min, prt_max);
-  while (AT(i)->prt_max <= prt_max) {
-    if (AT(i)->accepted ||
-        AT(i)->reject_count > REJECT_CUTOFF_COUNT)
-      continue;
-    AT(i)->accepted = 1;
+  while (i < smartlist_len(summary) &&
+         AT(i)->prt_max <= prt_max) {
+    if (!AT(i)->accepted &&
+        AT(i)->reject_count <= REJECT_CUTOFF_COUNT)
+      AT(i)->accepted = 1;
     i++;
   }
+  tor_assert(i < smartlist_len(summary) || prt_max==65535);
 }
 
 /** Count the number of addresses in a network with prefixlen maskbits
@@ -1034,10 +1035,12 @@ policy_summary_reject(smartlist_t *summary,
   int i = policy_summary_split(summary, prt_min, prt_max);
   /* XXX: ipv4 specific */
   int count = (1 << (32-maskbits));
-  while (AT(i)->prt_max <= prt_max) {
+  while (i < smartlist_len(summary) &&
+         AT(i)->prt_max <= prt_max) {
     AT(i)->reject_count += count;
     i++;
   }
+  tor_assert(i < smartlist_len(summary) || prt_max==65535);
 }
 
 /** Add a single exit policy item to our summary: