diff --git a/mongoose.c b/mongoose.c index 4de79c5f2b0b7e58fc7325264d88be581224dde0..9ea78be3c7f040a7b8cfc314c6bd7046570c8076 100644 --- a/mongoose.c +++ b/mongoose.c @@ -1347,8 +1347,10 @@ static void SHA1Transform(uint32_t state[5], const unsigned char buffer[64]) { state[2] += c; state[3] += d; state[4] += e; - a = b = c = d = e = 0; - memset(block, '\0', sizeof(block)); + // Erase working structures. The order of operations is important, + // used to ensure that compiler doesn't optimize those out. + memset(block, 0, sizeof(block)); + a = b = c = d = e = block[0].l[0]; } static void SHA1Init(SHA1_CTX* context) {