diff options
| author | miod <> | 2015-07-16 02:18:58 +0000 |
|---|---|---|
| committer | miod <> | 2015-07-16 02:18:58 +0000 |
| commit | e788fc75b28f97f30af63340858190d367d186b9 (patch) | |
| tree | 827008cb88ff12d6e0a6ae0c904cb4f8c93b2b3b | |
| parent | cb64b482f935b03613097ca01ae51a97bff1ec17 (diff) | |
| download | openbsd-e788fc75b28f97f30af63340858190d367d186b9.tar.gz openbsd-e788fc75b28f97f30af63340858190d367d186b9.tar.bz2 openbsd-e788fc75b28f97f30af63340858190d367d186b9.zip | |
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@
| -rw-r--r-- | src/lib/libcrypto/asn1/a_mbstr.c | 4 | ||||
| -rw-r--r-- | src/lib/libssl/src/crypto/asn1/a_mbstr.c | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/src/lib/libcrypto/asn1/a_mbstr.c b/src/lib/libcrypto/asn1/a_mbstr.c index 9ce0a000fe..e715fe7348 100644 --- a/src/lib/libcrypto/asn1/a_mbstr.c +++ b/src/lib/libcrypto/asn1/a_mbstr.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: a_mbstr.c,v 1.21 2014/10/12 20:47:12 miod Exp $ */ | 1 | /* $OpenBSD: a_mbstr.c,v 1.22 2015/07/16 02:18:58 miod Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 1999. | 3 | * project 1999. |
| 4 | */ | 4 | */ |
| @@ -288,7 +288,7 @@ traverse_string(const unsigned char *p, int len, int inform, | |||
| 288 | len -= 2; | 288 | len -= 2; |
| 289 | break; | 289 | break; |
| 290 | case MBSTRING_UNIV: | 290 | case MBSTRING_UNIV: |
| 291 | value = *p++ << 24; | 291 | value = (unsigned long)*p++ << 24; |
| 292 | value |= *p++ << 16; | 292 | value |= *p++ << 16; |
| 293 | value |= *p++ << 8; | 293 | value |= *p++ << 8; |
| 294 | value |= *p++; | 294 | value |= *p++; |
diff --git a/src/lib/libssl/src/crypto/asn1/a_mbstr.c b/src/lib/libssl/src/crypto/asn1/a_mbstr.c index 9ce0a000fe..e715fe7348 100644 --- a/src/lib/libssl/src/crypto/asn1/a_mbstr.c +++ b/src/lib/libssl/src/crypto/asn1/a_mbstr.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: a_mbstr.c,v 1.21 2014/10/12 20:47:12 miod Exp $ */ | 1 | /* $OpenBSD: a_mbstr.c,v 1.22 2015/07/16 02:18:58 miod Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 1999. | 3 | * project 1999. |
| 4 | */ | 4 | */ |
| @@ -288,7 +288,7 @@ traverse_string(const unsigned char *p, int len, int inform, | |||
| 288 | len -= 2; | 288 | len -= 2; |
| 289 | break; | 289 | break; |
| 290 | case MBSTRING_UNIV: | 290 | case MBSTRING_UNIV: |
| 291 | value = *p++ << 24; | 291 | value = (unsigned long)*p++ << 24; |
| 292 | value |= *p++ << 16; | 292 | value |= *p++ << 16; |
| 293 | value |= *p++ << 8; | 293 | value |= *p++ << 8; |
| 294 | value |= *p++; | 294 | value |= *p++; |
