Browse Source

r12769@catbus: nickm | 2007-05-16 17:32:01 -0400
Fix warnings from -Wunsafe-loop-optimizations, which incidentally turned up a logic bug in connection_or_flush_from_first_active_circuit that would overcount the number of cells flushed.


svn:r10199

Nick Mathewson 17 years ago
parent
commit
807adfc879
2 changed files with 3 additions and 5 deletions
  1. 2 4
      src/common/crypto.c
  2. 1 1
      src/or/relay.c

+ 2 - 4
src/common/crypto.c

@@ -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) {
+  for (cp = key_out, i=0; key_out_len >= DIGEST_LEN;
+       ++i, cp += DIGEST_LEN, key_out_len -= 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;
-    key_out_len -= DIGEST_LEN;
   }
   memset(tmp, 0, key_in_len+1);
   tor_free(tmp);

+ 1 - 1
src/or/relay.c

@@ -1807,7 +1807,7 @@ connection_or_flush_from_first_active_circuit(or_connection_t *conn, int max)
   }
   tor_assert(*next_circ_on_conn_p(circ,conn));
 
-  for (n_flushed = 0; n_flushed < max && queue->head; ++n_flushed) {
+  for (n_flushed = 0; n_flushed < max && queue->head; ) {
     packed_cell_t *cell = cell_queue_pop(queue);
     tor_assert(*next_circ_on_conn_p(circ,conn));