From: Max Date: Thu, 8 Sep 2016 07:54:45 +0000 (+0300) Subject: fix grasshopper-ctr memory corruption - fix ctx buffer size X-Git-Tag: v1.1.0.2~22^2~2^2~5 X-Git-Url: http://wagner.pp.ru/gitweb/?a=commitdiff_plain;h=03ff63b67e5b4f3e57f9c462bc073e66dcf20851;p=openssl-gost%2Fengine.git fix grasshopper-ctr memory corruption - fix ctx buffer size --- diff --git a/gost_grasshopper_cipher.c b/gost_grasshopper_cipher.c index 6adc380..363c4ae 100644 --- a/gost_grasshopper_cipher.c +++ b/gost_grasshopper_cipher.c @@ -96,7 +96,7 @@ static struct GRASSHOPPER_CIPHER_PARAMS gost_cipher_params[5] = { gost_grasshopper_cipher_do_ctr, gost_grasshopper_cipher_destroy_ctr, 1, - sizeof(gost_grasshopper_cipher_ctx), + sizeof(gost_grasshopper_cipher_ctx_ctr), 8, false }, @@ -295,13 +295,15 @@ static int gost_grasshopper_cipher_do_ctr(EVP_CIPHER_CTX* ctx, unsigned char* ou memcpy(&c->iv_buffer, iv, 8); // full parts - for (size_t i = 0; i < blocks; i++, current_in += GRASSHOPPER_BLOCK_SIZE, current_out += GRASSHOPPER_BLOCK_SIZE) { + for (size_t i = 0; i < blocks; i++) { currentInputBlock = (grasshopper_w128_t*) current_in; currentOutputBlock = (grasshopper_w128_t*) current_out; memcpy(c->iv_buffer.b + 8, &c->counter, 8); grasshopper_encrypt_block(&c->c.encrypt_round_keys, &c->iv_buffer, currentOutputBlock, &c->c.buffer); grasshopper_append128(currentOutputBlock, currentInputBlock); c->counter += 1; + current_in += GRASSHOPPER_BLOCK_SIZE; + current_out += GRASSHOPPER_BLOCK_SIZE; } // last part