diff options
author | Werner Koch <[email protected]> | 2002-09-10 08:28:03 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2002-09-10 08:28:03 +0000 |
commit | d6a87e6b2898704d8131288f10083c37d5ec2fb4 (patch) | |
tree | abc7e27b62084fbcb2630a336de3ba268160207d /mpi/mpicoder.c | |
parent | * w32reg.c (read_w32_registry_string): Handle REG_EXPAND_SZ. (diff) | |
download | gnupg-d6a87e6b2898704d8131288f10083c37d5ec2fb4.tar.gz gnupg-d6a87e6b2898704d8131288f10083c37d5ec2fb4.zip |
* mpicoder.c (mpi_set_buffer): Cast all left operands of a shift
to a larger type so that 16 bit CPUs don't suffer from an
overflow. Suggested by TOGAWA Satoshi.
Diffstat (limited to 'mpi/mpicoder.c')
-rw-r--r-- | mpi/mpicoder.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/mpi/mpicoder.c b/mpi/mpicoder.c index 559facd89..1859b6331 100644 --- a/mpi/mpicoder.c +++ b/mpi/mpicoder.c @@ -405,10 +405,10 @@ mpi_set_buffer( MPI a, const byte *buffer, unsigned nbytes, int sign ) for(i=0, p = buffer+nbytes-1; p >= buffer+BYTES_PER_MPI_LIMB; ) { #if BYTES_PER_MPI_LIMB == 4 - alimb = *p-- ; - alimb |= *p-- << 8 ; - alimb |= *p-- << 16 ; - alimb |= *p-- << 24 ; + alimb = (mpi_limb_t)*p-- ; + alimb |= (mpi_limb_t)*p-- << 8 ; + alimb |= (mpi_limb_t)*p-- << 16 ; + alimb |= (mpi_limb_t)*p-- << 24 ; #elif BYTES_PER_MPI_LIMB == 8 alimb = (mpi_limb_t)*p-- ; alimb |= (mpi_limb_t)*p-- << 8 ; @@ -426,9 +426,9 @@ mpi_set_buffer( MPI a, const byte *buffer, unsigned nbytes, int sign ) if( p >= buffer ) { #if BYTES_PER_MPI_LIMB == 4 alimb = *p-- ; - if( p >= buffer ) alimb |= *p-- << 8 ; - if( p >= buffer ) alimb |= *p-- << 16 ; - if( p >= buffer ) alimb |= *p-- << 24 ; + if( p >= buffer ) alimb |= (mpi_limb_t)*p-- << 8 ; + if( p >= buffer ) alimb |= (mpi_limb_t)*p-- << 16 ; + if( p >= buffer ) alimb |= (mpi_limb_t)*p-- << 24 ; #elif BYTES_PER_MPI_LIMB == 8 alimb = (mpi_limb_t)*p-- ; if( p >= buffer ) alimb |= (mpi_limb_t)*p-- << 8 ; |