mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2024-11-27 03:44:24 +01:00
Initialize ret from test code
The test function mbedtls_mpi_lt_mpi_ct did not initialize ret in test code. If there was a bug in library code whereby the library function mbedtls_mpi_lt_mpi_ct() did not set ret when it should, we might have missed it if ret happened to contain the expected value. So initialize ret to a value that we never expect. In Mbed TLS 2.7.17, the lack of initialization also caused Valgrind to fail on a Clang 3.8 build with -O1 or more (not with -O0). As far as I can tell, this is an instance of a known bug/feature in Clang which sometimes generates code that contains a conditional jump based on memory which is not initialized at the C level. This is not really a bug in Clang as a C compiler since the code has the same behavior whether the branch is taken or not, and therefore the branch is not observable at the C level. However, the branch on C-uninitialized memory causes a false positive from Valgrind. Here are some reports of this Clang behavior: * https://lists.llvm.org/pipermail/llvm-dev/2016-November/107428.html * https://bugs.llvm.org/show_bug.cgi?id=32604 Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
parent
d4c9fd1e0a
commit
cb0ec05717
@ -337,7 +337,7 @@ void mbedtls_mpi_lt_mpi_ct( int size_X, char * input_X,
|
|||||||
int size_Y, char * input_Y,
|
int size_Y, char * input_Y,
|
||||||
int input_ret, int input_err )
|
int input_ret, int input_err )
|
||||||
{
|
{
|
||||||
unsigned ret;
|
unsigned ret = -1;
|
||||||
unsigned input_uret = input_ret;
|
unsigned input_uret = input_ret;
|
||||||
mbedtls_mpi X, Y;
|
mbedtls_mpi X, Y;
|
||||||
mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y );
|
mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y );
|
||||||
|
Loading…
Reference in New Issue
Block a user