From: Nick Mathewson Date: Fri, 13 Nov 2015 14:46:32 +0000 (-0500) Subject: Remove a little duplicated code in TAP key expansion X-Git-Tag: tor-0.2.8.1-alpha~241 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=accb726db6ebd7cf55df719a254b7681402c2aa9;p=thirdparty%2Ftor.git Remove a little duplicated code in TAP key expansion patch from pfrankw; closes 17587. --- diff --git a/changes/cleanup_17587 b/changes/cleanup_17587 new file mode 100644 index 0000000000..05e00fd9e5 --- /dev/null +++ b/changes/cleanup_17587 @@ -0,0 +1,3 @@ + o Code simplifications and refactorings: + - Clean up a little duplicated code in crypto_expand_key_material_TAP. + Closes ticket 17587; patch from "pfrankw". diff --git a/src/common/crypto.c b/src/common/crypto.c index 4c41d4494d..ffbeb81089 100644 --- a/src/common/crypto.c +++ b/src/common/crypto.c @@ -2159,7 +2159,7 @@ int crypto_expand_key_material_TAP(const uint8_t *key_in, size_t key_in_len, uint8_t *key_out, size_t key_out_len) { - int i; + int i, r = -1; uint8_t *cp, *tmp = tor_malloc(key_in_len+1); uint8_t digest[DIGEST_LEN]; @@ -2171,19 +2171,16 @@ crypto_expand_key_material_TAP(const uint8_t *key_in, size_t key_in_len, ++i, cp += DIGEST_LEN) { tmp[key_in_len] = i; if (crypto_digest((char*)digest, (const char *)tmp, key_in_len+1)) - goto err; + goto exit; memcpy(cp, digest, MIN(DIGEST_LEN, key_out_len-(cp-key_out))); } - memwipe(tmp, 0, key_in_len+1); - tor_free(tmp); - memwipe(digest, 0, sizeof(digest)); - return 0; - err: + r = 0; + exit: memwipe(tmp, 0, key_in_len+1); tor_free(tmp); memwipe(digest, 0, sizeof(digest)); - return -1; + return r; } /** Expand some secret key material according to RFC5869, using SHA256 as the