Path: blob/main/crypto/krb5/src/util/support/t_unal.c
34889 views
/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */1#undef NDEBUG2#include "k5-platform.h"34int5main(void)6{7/* Test some low-level assumptions the Kerberos code depends8on. */910union {11uint64_t n64;12uint32_t n32;13uint16_t n16;14unsigned char b[9];15} u;16static unsigned char buf[9] = { 0, 1, 2, 3, 4, 5, 6, 7, 8 };1718assert(load_64_be(buf+1) == 0x0102030405060708LL);19assert(load_64_le(buf+1) == 0x0807060504030201LL);20assert(load_32_le(buf+2) == 0x05040302);21assert(load_32_be(buf+2) == 0x02030405);22assert(load_16_be(buf+3) == 0x0304);23assert(load_16_le(buf+3) == 0x0403);24u.b[0] = 0;25assert((store_64_be(0x0102030405060708LL, u.b+1), !memcmp(buf, u.b, 9)));26u.b[1] = 9;27assert((store_64_le(0x0807060504030201LL, u.b+1), !memcmp(buf, u.b, 9)));28u.b[2] = 10;29assert((store_32_be(0x02030405, u.b+2), !memcmp(buf, u.b, 9)));30u.b[3] = 11;31assert((store_32_le(0x05040302, u.b+2), !memcmp(buf, u.b, 9)));32u.b[4] = 12;33assert((store_16_be(0x0304, u.b+3), !memcmp(buf, u.b, 9)));34u.b[4] = 13;35assert((store_16_le(0x0403, u.b+3), !memcmp(buf, u.b, 9)));36/* Verify that load_*_n properly does native format. Assume37the unaligned thing is okay. */38u.n64 = 0x090a0b0c0d0e0f00LL;39assert(load_64_n((unsigned char *) &u.n64) == 0x090a0b0c0d0e0f00LL);40u.n32 = 0x06070809;41assert(load_32_n((unsigned char *) &u.n32) == 0x06070809);42u.n16 = 0x0a0b;43assert(load_16_n((unsigned char *) &u.n16) == 0x0a0b);4445return 0;46}474849