[openssl] OpenSSL_1_1_1-stable update

tomas at openssl.org tomas at openssl.org
Thu Jan 27 09:37:54 UTC 2022


The branch OpenSSL_1_1_1-stable has been updated
       via  0b13bd04d66d48490e7b27167b27ccccb0086143 (commit)
      from  4c5c2a5efbc315d7926cafbd5a19044ee3e087fa (commit)


- Log -----------------------------------------------------------------
commit 0b13bd04d66d48490e7b27167b27ccccb0086143
Author: Tomas Mraz <tomas at openssl.org>
Date:   Tue Jan 25 17:14:52 2022 +0100

    lhash: Avoid 32 bit right shift of a 32 bit value
    
    Fixes #17583
    
    Reviewed-by: Matt Caswell <matt at openssl.org>
    Reviewed-by: Paul Dale <pauli at openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/17589)
    
    (cherry picked from commit 2ce0a3d19005271e7e3c351b562d9da93e2d4c80)

-----------------------------------------------------------------------

Summary of changes:
 crypto/lhash/lhash.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/crypto/lhash/lhash.c b/crypto/lhash/lhash.c
index 9dc887d91e..7918a74eed 100644
--- a/crypto/lhash/lhash.c
+++ b/crypto/lhash/lhash.c
@@ -343,7 +343,8 @@ unsigned long OPENSSL_LH_strhash(const char *c)
         v = n | (*c);
         n += 0x100;
         r = (int)((v >> 2) ^ v) & 0x0f;
-        ret = (ret << r) | (ret >> (32 - r));
+        /* cast to uint64_t to avoid 32 bit shift of 32 bit value */
+        ret = (ret << r) | (unsigned long)((uint64_t)ret >> (32 - r));
         ret &= 0xFFFFFFFFL;
         ret ^= v * v;
         c++;
@@ -364,7 +365,8 @@ unsigned long openssl_lh_strcasehash(const char *c)
     for (n = 0x100; *c != '\0'; n += 0x100) {
         v = n | ossl_tolower(*c);
         r = (int)((v >> 2) ^ v) & 0x0f;
-        ret = (ret << r) | (ret >> (32 - r));
+        /* cast to uint64_t to avoid 32 bit shift of 32 bit value */
+        ret = (ret << r) | (unsigned long)((uint64_t)ret >> (32 - r));
         ret &= 0xFFFFFFFFL;
         ret ^= v * v;
         c++;


More information about the openssl-commits mailing list