diff options
author | marha <marha@users.sourceforge.net> | 2014-02-07 23:28:38 +0100 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2014-02-07 23:38:15 +0100 |
commit | 982ac918afe6a1c02d5cf735d7b6c56443a048cc (patch) | |
tree | e737eb3f7bb18d933e14f0967c1c1aa5ce5e06f6 /openssl/crypto/modes/cbc128.c | |
parent | 30af30b78075159fce477ae99cc72540133714d0 (diff) | |
download | vcxsrv-982ac918afe6a1c02d5cf735d7b6c56443a048cc.tar.gz vcxsrv-982ac918afe6a1c02d5cf735d7b6c56443a048cc.tar.bz2 vcxsrv-982ac918afe6a1c02d5cf735d7b6c56443a048cc.zip |
xkbcomp xkeyboard-config libxcb libxtrans fontconfig libX11 libxcb mesa xserver git update 7 Feb 2014
Update to openssl1.0.1f
xserver commit 83e38eb73fd8c852513aac2da2975b4c01070ec2
libxcb commit d7eb0bdf3b5b11ee9f40ee5e73df8fc0bdfa59f3
xkeyboard-config commit 7596672b96315465df8d8d691e3a567a52f70743
libX11 commit aacf95dacc7c598e7297894580d4d655593813b2
xkbcomp commit 31b90ee4ffc774e0da540277907fc5540c0b012c
libxtrans commit 3f0de269abe59353acbd7a5587d68ce0da91db67
fontconfig commit e310d2fac2d874d5aa76c609df70cc7b871c0b6d
mesa commit dd2229d4c68ed78a50104637aef904f8ab6d7dd3
Diffstat (limited to 'openssl/crypto/modes/cbc128.c')
-rw-r--r-- | openssl/crypto/modes/cbc128.c | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/openssl/crypto/modes/cbc128.c b/openssl/crypto/modes/cbc128.c index 3d3782cbe..0e54f7547 100644 --- a/openssl/crypto/modes/cbc128.c +++ b/openssl/crypto/modes/cbc128.c @@ -117,7 +117,7 @@ void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out, unsigned char ivec[16], block128_f block) { size_t n; - union { size_t align; unsigned char c[16]; } tmp; + union { size_t t[16/sizeof(size_t)]; unsigned char c[16]; } tmp; assert(in && out && key && ivec); @@ -137,11 +137,13 @@ void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out, out += 16; } } - else { + else if (16%sizeof(size_t) == 0) { /* always true */ while (len>=16) { + size_t *out_t=(size_t *)out, *iv_t=(size_t *)iv; + (*block)(in, out, key); - for(n=0; n<16; n+=sizeof(size_t)) - *(size_t *)(out+n) ^= *(size_t *)(iv+n); + for(n=0; n<16/sizeof(size_t); n++) + out_t[n] ^= iv_t[n]; iv = in; len -= 16; in += 16; @@ -165,15 +167,16 @@ void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out, out += 16; } } - else { - size_t c; + else if (16%sizeof(size_t) == 0) { /* always true */ while (len>=16) { + size_t c, *out_t=(size_t *)out, *ivec_t=(size_t *)ivec; + const size_t *in_t=(const size_t *)in; + (*block)(in, tmp.c, key); - for(n=0; n<16; n+=sizeof(size_t)) { - c = *(size_t *)(in+n); - *(size_t *)(out+n) = - *(size_t *)(tmp.c+n) ^ *(size_t *)(ivec+n); - *(size_t *)(ivec+n) = c; + for(n=0; n<16/sizeof(size_t); n++) { + c = in_t[n]; + out_t[n] = tmp.t[n] ^ ivec_t[n]; + ivec_t[n] = c; } len -= 16; in += 16; |