summaryrefslogtreecommitdiff
path: root/lib/libcrypto/asn1
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2015-07-16 02:18:59 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2015-07-16 02:18:59 +0000
commit383e2b5d838ab2877b7e3096e5f0583362e8fa91 (patch)
treecdefd47223f6fe8e0ec973eea15498e91fbfe5fe /lib/libcrypto/asn1
parentbe1f73b36dec0468ffbcd3603cc21d5c006ad53f (diff)
Explicitely cast a char into unsigned long before shifting it left by 24, for
this would promote it to int for the shift, and then cast to unsigned long, sign-extending it if sizeof(long) > sizeof(int). This was not a problem because the computed value was explicitely range checked afterwards, with an upper bound way smaller than 1U<<31, but it's better practice to cast correctly. ok beck@
Diffstat (limited to 'lib/libcrypto/asn1')
-rw-r--r--lib/libcrypto/asn1/a_mbstr.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/libcrypto/asn1/a_mbstr.c b/lib/libcrypto/asn1/a_mbstr.c
index 9ce0a000feb..e715fe73483 100644
--- a/lib/libcrypto/asn1/a_mbstr.c
+++ b/lib/libcrypto/asn1/a_mbstr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: a_mbstr.c,v 1.21 2014/10/12 20:47:12 miod Exp $ */
+/* $OpenBSD: a_mbstr.c,v 1.22 2015/07/16 02:18:58 miod Exp $ */
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project 1999.
*/
@@ -288,7 +288,7 @@ traverse_string(const unsigned char *p, int len, int inform,
len -= 2;
break;
case MBSTRING_UNIV:
- value = *p++ << 24;
+ value = (unsigned long)*p++ << 24;
value |= *p++ << 16;
value |= *p++ << 8;
value |= *p++;