Skip to content

Commit 95dc627

Browse files
Use integer decoding functions throughout the codebase
1 parent d01e7f6 commit 95dc627

18 files changed

+137
-298
lines changed

src/libbson/src/bson/bson-context.c

+6-22
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17+
#include <mlib/intencode.h>
1718
#include <bson/bson-compat.h>
1819

1920
#include <limits.h>
@@ -116,23 +117,6 @@ _bson_rotl_u64 (uint64_t *p, int nbits)
116117
*p = (*p << nbits) | (*p >> (64 - nbits));
117118
}
118119

119-
/* Write the little-endian representation of 'val' into 'out' */
120-
void
121-
_u64_into_u8x8_le (uint8_t out[8], uint64_t val)
122-
{
123-
val = BSON_UINT64_TO_LE (val);
124-
memcpy (out, &val, sizeof val);
125-
}
126-
127-
/* Read a little-endian representation of a 64bit number from 'in' */
128-
uint64_t
129-
_u8x8_le_to_u64 (const uint8_t in[8])
130-
{
131-
uint64_t r;
132-
memcpy (&r, in, sizeof r);
133-
return BSON_UINT64_FROM_LE (r);
134-
}
135-
136120
/* Perform one SipHash round */
137121
void
138122
_sip_round (uint64_t *v0, uint64_t *v1, uint64_t *v2, uint64_t *v3)
@@ -167,8 +151,8 @@ _siphash (const void *in, const size_t inlen, const uint64_t key[2], uint64_t di
167151
uint64_t v1 = UINT64_C (0x646f72616e646f6d);
168152
uint64_t v2 = UINT64_C (0x6c7967656e657261);
169153
uint64_t v3 = UINT64_C (0x7465646279746573);
170-
uint64_t k0 = _u8x8_le_to_u64 (kk);
171-
uint64_t k1 = _u8x8_le_to_u64 (kk + 8);
154+
uint64_t k0 = mlib_read_u64le (kk);
155+
uint64_t k1 = mlib_read_u64le (kk + 8);
172156
uint64_t m;
173157
int i;
174158
const unsigned char *end = ni + inlen - (inlen % sizeof (uint64_t));
@@ -182,7 +166,7 @@ _siphash (const void *in, const size_t inlen, const uint64_t key[2], uint64_t di
182166
v1 ^= 0xee;
183167

184168
for (; ni != end; ni += 8) {
185-
m = _u8x8_le_to_u64 (ni);
169+
m = mlib_read_u64le (ni);
186170
v3 ^= m;
187171

188172
for (i = 0; i < C_ROUNDS; ++i)
@@ -232,15 +216,15 @@ _siphash (const void *in, const size_t inlen, const uint64_t key[2], uint64_t di
232216
_sip_round (&v0, &v1, &v2, &v3);
233217

234218
b = v0 ^ v1 ^ v2 ^ v3;
235-
_u64_into_u8x8_le (digest_buf, b);
219+
mlib_write_u64le (digest_buf, b);
236220

237221
v1 ^= 0xdd;
238222

239223
for (i = 0; i < D_ROUNDS; ++i)
240224
_sip_round (&v0, &v1, &v2, &v3);
241225

242226
b = v0 ^ v1 ^ v2 ^ v3;
243-
_u64_into_u8x8_le (digest_buf + 8, b);
227+
mlib_write_u64le (digest_buf + 8, b);
244228

245229
memcpy (digest, digest_buf, sizeof digest_buf);
246230
}

0 commit comments

Comments
 (0)