From 3699c1f4ba441ce91f5fa674e73c3c4fa0264578 Mon Sep 17 00:00:00 2001 From: Andrey Rys Date: Sun, 18 Aug 2019 12:47:28 +0200 Subject: [PATCH] tfe: fix endianness with blocks smaller than TF_BLOCK_SIZE. --- VERSION | 2 +- tfe.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/VERSION b/VERSION index f5c8955..bb95160 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -32 +33 diff --git a/tfe.c b/tfe.c index 127d063..eea50d3 100644 --- a/tfe.c +++ b/tfe.c @@ -49,9 +49,13 @@ void tfe_emit(void *dst, size_t szdst, struct tfe_stream *tfe) } if (sz) { + TF_UNIT_TYPE t[TF_NR_BLOCK_UNITS]; + tf_encrypt_rawblk(tfe->iv, tfe->iv, tfe->key); - memcpy(udst, tfe->iv, sz); - data_to_words(udst, TF_BLOCK_SIZE); + memcpy(t, tfe->iv, TF_BLOCK_SIZE); + data_to_words(t, TF_BLOCK_SIZE); + memcpy(udst, t, sz); + memset(t, 0, TF_BLOCK_SIZE); udst = (TF_BYTE_TYPE *)tfe->iv; tfe->carry_bytes = TF_BLOCK_SIZE-sz; memcpy(tfe->carry_block, udst+sz, tfe->carry_bytes); -- 2.31.1