From: Tomas Mraz Date: Tue, 19 May 2020 08:51:19 +0000 (+0200) Subject: Cast the unsigned char to unsigned int before shifting left X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=e11072908742e96a1067bb1b9609bfc27ab05835;p=oweals%2Fopenssl.git Cast the unsigned char to unsigned int before shifting left This is needed to avoid automatic promotion to signed int. Fixes #11853 [extended tests] Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/11857) (cherry picked from commit cbeb0bfa961412eebfbdf1e72900f05527e81e15) --- diff --git a/crypto/pem/pvkfmt.c b/crypto/pem/pvkfmt.c index 46ed2ecdbc..e6156df533 100644 --- a/crypto/pem/pvkfmt.c +++ b/crypto/pem/pvkfmt.c @@ -29,10 +29,10 @@ static unsigned int read_ledword(const unsigned char **in) { const unsigned char *p = *in; unsigned int ret; - ret = *p++; - ret |= (*p++ << 8); - ret |= (*p++ << 16); - ret |= (*p++ << 24); + ret = (unsigned int)*p++; + ret |= (unsigned int)*p++ << 8; + ret |= (unsigned int)*p++ << 16; + ret |= (unsigned int)*p++ << 24; *in = p; return ret; }