mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2024-12-25 02:45:32 +00: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 input_ret, int input_err )
|
||||
{
|
||||
unsigned ret;
|
||||
unsigned ret = -1;
|
||||
unsigned input_uret = input_ret;
|
||||
mbedtls_mpi X, Y;
|
||||
mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y );
|
||||
|
|
Loading…
Reference in a new issue