From 33031020e1bd35b52b91aea0b899756c59bf62e6 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Thu, 13 Aug 2020 14:14:00 +0200 Subject: [PATCH] Fix mistake in AESHASH algorithm The read data wasn't encoded into the state correctly. Change-Id: Ib0a3b50bfeb56968de5c5e8353b28383cb586271 Reviewed-by: Thiago Macieira --- src/corelib/tools/qhash.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/corelib/tools/qhash.cpp b/src/corelib/tools/qhash.cpp index dfcad8684a..7c58be0f84 100644 --- a/src/corelib/tools/qhash.cpp +++ b/src/corelib/tools/qhash.cpp @@ -449,8 +449,8 @@ static size_t aeshash(const uchar *p, size_t len, size_t seed) noexcept while (src < srcend) { __m128i data0 = _mm_loadu_si128(src); __m128i data1 = _mm_loadu_si128(src + 1); - data0 = _mm_xor_si128(data0, state0); - data1 = _mm_xor_si128(data1, state1); + state0 = _mm_xor_si128(data0, state0); + state1 = _mm_xor_si128(data1, state1); state0 = _mm_aesenc_si128(state0, state0); state1 = _mm_aesenc_si128(state1, state1); state0 = _mm_aesenc_si128(state0, state0);