sodium_compare(): cast operands to unsigned int

This matches the Zig implementation and
fixes #1184
This commit is contained in:
Frank Denis 2022-06-05 14:28:54 +02:00
parent 17d9198774
commit 3f3d350387

View File

@ -242,8 +242,8 @@ sodium_compare(const unsigned char *b1_, const unsigned char *b2_, size_t len)
i--;
x1 = b1[i];
x2 = b2[i];
gt |= ((x2 - x1) >> 8) & eq;
eq &= ((x2 ^ x1) - 1) >> 8;
gt |= (((unsigned int) x2 - (unsigned int) x1) >> 8) & eq;
eq &= (((unsigned int) (x2 ^ x1)) - 1) >> 8;
}
return (int) (gt + gt + eq) - 1;
}