Merge branch 'maint-0.3.5'

This commit is contained in:
Nick Mathewson
2018-10-24 10:20:53 -04:00
2 changed files with 9 additions and 6 deletions
+3
View File
@@ -0,0 +1,3 @@
o Minor bugfixes (portability):
- Make the OPE code (which is used for v3 onion services) run correctly
on big-endian platforms. Fixes bug 28115; bugfix on 0.3.5.1-alpha.
+6 -6
View File
@@ -48,17 +48,17 @@ struct crypto_ope_t {
/** The type to add up in order to produce our OPE ciphertexts */
typedef uint16_t ope_val_t;
#ifdef WORDS_BIG_ENDIAN
/** Convert an OPE value to little-endian */
#ifdef WORDS_BIGENDIAN
/** Convert an OPE value from little-endian. */
static inline ope_val_t
ope_val_to_le(ope_val_t x)
ope_val_from_le(ope_val_t x)
{
return
((x) >> 8) |
(((x)&0xff) << 8);
}
#else
#define ope_val_to_le(x) (x)
#define ope_val_from_le(x) (x)
#endif
/**
@@ -104,7 +104,7 @@ sum_values_from_cipher(crypto_cipher_t *c, size_t n)
crypto_cipher_crypt_inplace(c, (char*)buf, BUFSZ*sizeof(ope_val_t));
for (i = 0; i < BUFSZ; ++i) {
total += ope_val_to_le(buf[i]);
total += ope_val_from_le(buf[i]);
total += 1;
}
n -= BUFSZ;
@@ -113,7 +113,7 @@ sum_values_from_cipher(crypto_cipher_t *c, size_t n)
memset(buf, 0, n*sizeof(ope_val_t));
crypto_cipher_crypt_inplace(c, (char*)buf, n*sizeof(ope_val_t));
for (i = 0; i < n; ++i) {
total += ope_val_to_le(buf[i]);
total += ope_val_from_le(buf[i]);
total += 1;
}