]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
r13283@catbus: nickm | 2007-06-06 01:43:44 -0400
authorNick Mathewson <nickm@torproject.org>
Wed, 6 Jun 2007 13:02:22 +0000 (13:02 +0000)
committerNick Mathewson <nickm@torproject.org>
Wed, 6 Jun 2007 13:02:22 +0000 (13:02 +0000)
 Fix up a couple of loops flagged by -Wunsafe-loop-optimizations so that they are more readable (and more amenable to compilation)

svn:r10513

src/common/crypto.c
src/or/rephist.c

index bcb8a375a8b2139b5efe5286e74b2652e6890917..adf375bd8369c0137826a49b47d4bb890c3ba581 100644 (file)
@@ -1494,14 +1494,12 @@ crypto_expand_key_material(const char *key_in, size_t key_in_len,
   tor_assert(key_out_len <= DIGEST_LEN*256);
 
   memcpy(tmp, key_in, key_in_len);
-  for (cp = key_out, i=0; key_out_len;
-       ++i, cp += DIGEST_LEN, key_out_len -= DIGEST_LEN) {
+  for (cp = key_out, i=0; cp < key_out+key_out_len;
+       ++i, cp += DIGEST_LEN) {
     tmp[key_in_len] = i;
     if (crypto_digest(digest, tmp, key_in_len+1))
       goto err;
-    memcpy(cp, digest, MIN(DIGEST_LEN, key_out_len));
-    if (key_out_len < DIGEST_LEN)
-      break;
+    memcpy(cp, digest, MIN(DIGEST_LEN, key_out_len-(cp-key_out)));
   }
   memset(tmp, 0, key_in_len+1);
   tor_free(tmp);
index ae9442dd553cf48f6cdece2d304b6c6a55a72739..c712f1525edba3514bdeb083b462ff78c319cfa5 100644 (file)
@@ -599,7 +599,9 @@ rep_hist_fill_bandwidth_history(char *buf, size_t len, bw_array_t *b)
 
   for (n=0; n<b->num_maxes_set; ++n,++i) {
     uint64_t total;
-    while (i >= NUM_TOTALS) i -= NUM_TOTALS;
+    if (i >= NUM_TOTALS)
+      i -= NUM_TOTALS;
+    tor_assert(i < NUM_TOTALS);
     /* Round the bandwidth used down to the nearest 1k. */
     total = b->totals[i] & ~0x3ff;
     if (n==(b->num_maxes_set-1))
@@ -1473,7 +1475,9 @@ hs_usage_format_history(char *buf, size_t len, uint32_t *data)
     i = current_period->next_idx;
   }
   for (n = 0; n < current_period->num_set; ++n,++i) {
-    while (i >= NUM_TOTALS_HS_USAGE) i -= NUM_TOTALS_HS_USAGE;
+    if (i >= NUM_TOTALS_HS_USAGE)
+      i -= NUM_TOTALS_HS_USAGE;
+    tor_assert(i < NUM_TOTALS_HS_USAGE);
     if (n == (current_period->num_set-1))
       tor_snprintf(cp, len-(cp-buf), "%d", data[i]);
     else