mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
Explicitly test our get/set_uint{8,16,32,64}.
This commit is contained in:
@@ -391,6 +391,7 @@ AC_CHECK_FUNCS(
|
||||
getrlimit \
|
||||
gettimeofday \
|
||||
gmtime_r \
|
||||
htonll \
|
||||
inet_aton \
|
||||
ioctl \
|
||||
issetugid \
|
||||
|
||||
@@ -11,6 +11,44 @@
|
||||
|
||||
#define NS_MODULE util_format
|
||||
|
||||
#if !defined(HAVE_HTONLL) && !defined(htonll)
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
#define htonll(x) (x)
|
||||
#else
|
||||
static uint64_t
|
||||
htonll(uint64_t a)
|
||||
{
|
||||
return htonl((uint32_t)(a>>32)) | (((uint64_t)htonl((uint32_t)a))<<32);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
static void
|
||||
test_util_format_unaligned_accessors(void *ignored)
|
||||
{
|
||||
(void)ignored;
|
||||
char buf[9] = "onionsoup"; // 6f6e696f6e736f7570
|
||||
|
||||
tt_u64_op(get_uint64(buf+1), OP_EQ, htonll(U64_LITERAL(0x6e696f6e736f7570)));
|
||||
tt_uint_op(get_uint32(buf+1), OP_EQ, htonl(0x6e696f6e));
|
||||
tt_uint_op(get_uint16(buf+1), OP_EQ, htons(0x6e69));
|
||||
tt_uint_op(get_uint8(buf+1), OP_EQ, 0x6e);
|
||||
|
||||
set_uint8(buf+7, 0x61);
|
||||
tt_mem_op(buf, OP_EQ, "onionsoap", 9);
|
||||
|
||||
set_uint16(buf+6, htons(0x746f));
|
||||
tt_mem_op(buf, OP_EQ, "onionstop", 9);
|
||||
|
||||
set_uint32(buf+1, htonl(0x78696465));
|
||||
tt_mem_op(buf, OP_EQ, "oxidestop", 9);
|
||||
|
||||
set_uint64(buf+1, htonll(U64_LITERAL(0x6266757363617465)));
|
||||
tt_mem_op(buf, OP_EQ, "obfuscate", 9);
|
||||
done:
|
||||
;
|
||||
}
|
||||
|
||||
static void
|
||||
test_util_format_base64_encode(void *ignored)
|
||||
{
|
||||
@@ -252,6 +290,8 @@ test_util_format_base16_decode(void *ignored)
|
||||
}
|
||||
|
||||
struct testcase_t util_format_tests[] = {
|
||||
{ "unaligned_accessors", test_util_format_unaligned_accessors, 0,
|
||||
NULL, NULL },
|
||||
{ "base64_encode", test_util_format_base64_encode, 0, NULL, NULL },
|
||||
{ "base64_decode_nopad", test_util_format_base64_decode_nopad, 0,
|
||||
NULL, NULL },
|
||||
|
||||
Reference in New Issue
Block a user