mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2025-01-10 22:25:28 +00:00
Fix mpi_bigendian_to_host() on bigendian systems
The previous implementation of mpi_bigendian_to_host() did a byte-swapping regardless of the endianness of the system. Fixes #2622.
This commit is contained in:
parent
9fb12bd1a2
commit
92c98931f2
|
@ -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 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue