aboutsummaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2007-06-06 13:02:22 +0000
committerNick Mathewson <nickm@torproject.org>2007-06-06 13:02:22 +0000
commit6673d445f57aac34035393cdbfefaf67249e1a34 (patch)
tree696a9eb5596078cbb4692288dadc2951d71ea78d /src/common
parent1a29d6808140df77dc8a9381906f178588440e1c (diff)
downloadtor-6673d445f57aac34035393cdbfefaf67249e1a34.tar
tor-6673d445f57aac34035393cdbfefaf67249e1a34.tar.gz
r13283@catbus: nickm | 2007-06-06 01:43:44 -0400
Fix up a couple of loops flagged by -Wunsafe-loop-optimizations so that they are more readable (and more amenable to compilation) svn:r10513
Diffstat (limited to 'src/common')
-rw-r--r--src/common/crypto.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/src/common/crypto.c b/src/common/crypto.c
index bcb8a375a..adf375bd8 100644
--- a/src/common/crypto.c
+++ b/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, 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);