Merge remote-tracking branch 'origin/pr/2645' into mbedtls-2.16

* origin/pr/2645:
  Adapt ChangeLog
  Fix mpi_bigendian_to_host() on bigendian systems
This commit is contained in:
Jaeden Amero 2019-09-05 17:37:13 +01:00
commit c3bfb20a41
2 changed files with 11 additions and 3 deletions

View file

@ -30,6 +30,9 @@ Bugfix
Discovered and fixed by Andy Gross (Linaro), #2392. Discovered and fixed by Andy Gross (Linaro), #2392.
* Zero length buffer check for undefined behavior in * Zero length buffer check for undefined behavior in
mbedtls_platform_zeroize(). Fixes ARMmbed/mbed-crypto#49. mbedtls_platform_zeroize(). Fixes ARMmbed/mbed-crypto#49.
* Fix bug in endianness conversion in bignum module. This lead to
functionally incorrect code on bigendian systems which don't have
__BYTE_ORDER__ defined. Reported by Brendan Shanks. Fixes #2622.
Changes Changes
* Make it easier to define MBEDTLS_PARAM_FAILED as assert (which config.h * Make it easier to define MBEDTLS_PARAM_FAILED as assert (which config.h

View file

@ -742,10 +742,15 @@ cleanup:
static mbedtls_mpi_uint mpi_uint_bigendian_to_host_c( mbedtls_mpi_uint x ) static mbedtls_mpi_uint mpi_uint_bigendian_to_host_c( mbedtls_mpi_uint x )
{ {
uint8_t i; uint8_t i;
unsigned char *x_ptr;
mbedtls_mpi_uint tmp = 0; mbedtls_mpi_uint tmp = 0;
/* This works regardless of the endianness. */
for( i = 0; i < ciL; i++, x >>= 8 ) for( i = 0, x_ptr = (unsigned char*) &x; i < ciL; i++, x_ptr++ )
tmp |= ( x & 0xFF ) << ( ( ciL - 1 - i ) << 3 ); {
tmp <<= CHAR_BIT;
tmp |= (mbedtls_mpi_uint) *x_ptr;
}
return( tmp ); return( tmp );
} }