r17964@catbus: nickm | 2008-02-07 10:45:02 -0500

Fix bug in last patch that made secret_to_key crash.


svn:r13415
This commit is contained in:
Nick Mathewson 2008-02-07 16:10:36 +00:00
parent eecc44dab8
commit b8179871a6

View File

@ -2093,7 +2093,7 @@ secret_to_key(char *key_out, size_t key_out_len, const char *secret,
{ {
crypto_digest_env_t *d; crypto_digest_env_t *d;
uint8_t c; uint8_t c;
size_t count; size_t count, tmplen;
char *tmp; char *tmp;
tor_assert(key_out_len < SIZE_T_CEILING); tor_assert(key_out_len < SIZE_T_CEILING);
@ -2105,7 +2105,8 @@ secret_to_key(char *key_out, size_t key_out_len, const char *secret,
tor_assert(key_out_len <= DIGEST_LEN); tor_assert(key_out_len <= DIGEST_LEN);
d = crypto_new_digest_env(); d = crypto_new_digest_env();
tmp = tor_malloc(8+secret_len); tmplen = 8+secret_len;
tmp = tor_malloc(tmplen);
memcpy(tmp,s2k_specifier,8); memcpy(tmp,s2k_specifier,8);
memcpy(tmp+8,secret,secret_len); memcpy(tmp+8,secret,secret_len);
secret_len += 8; secret_len += 8;
@ -2119,7 +2120,7 @@ secret_to_key(char *key_out, size_t key_out_len, const char *secret,
} }
} }
crypto_digest_get_digest(d, key_out, key_out_len); crypto_digest_get_digest(d, key_out, key_out_len);
memset(tmp, 0, 8+secret_len); memset(tmp, 0, tmplen);
tor_free(tmp); tor_free(tmp);
crypto_free_digest_env(d); crypto_free_digest_env(d);
} }