mirror of
https://github.com/jedisct1/libsodium.git
synced 2026-08-25 08:37:13 +09:00
Remove error string from sodium_misuse()
Returning the name of an internal function to bindings is useless. They need way more context to recover from these errors, and their own backtrace will be way more useful for diagnostics.
This commit is contained in:
@@ -525,7 +525,7 @@ crypto_aead_aes256gcm_encrypt_detached_afternm(unsigned char *c,
|
||||
(void) nsec;
|
||||
memcpy(H, ctx->H, sizeof H);
|
||||
if (mlen > 16ULL * ((1ULL << 32) - 2)) {
|
||||
sodium_misuse("crypto_aead_aes256gcm_encrypt_detached_afternm(): message too long"); /* LCOV_EXCL_LINE */
|
||||
sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||
}
|
||||
memcpy(&n2[0], npub, 3 * 4);
|
||||
n2[3] = 0x01000000;
|
||||
@@ -663,7 +663,7 @@ crypto_aead_aes256gcm_decrypt_detached_afternm(unsigned char *m, unsigned char *
|
||||
|
||||
(void) nsec;
|
||||
if (clen > 16ULL * (1ULL << 32)) {
|
||||
sodium_misuse("crypto_aead_aes256gcm_decrypt_detached_afternm(): ciphertext too long"); /* LCOV_EXCL_LINE */
|
||||
sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||
}
|
||||
mlen = clen;
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ crypto_aead_chacha20poly1305_encrypt(unsigned char *c,
|
||||
int ret;
|
||||
|
||||
if (mlen > UINT64_MAX - crypto_aead_chacha20poly1305_ABYTES) {
|
||||
sodium_misuse("crypto_aead_chacha20poly1305_encrypt(): message too long");
|
||||
sodium_misuse();
|
||||
}
|
||||
ret = crypto_aead_chacha20poly1305_encrypt_detached(c,
|
||||
c + mlen, NULL,
|
||||
@@ -146,7 +146,7 @@ crypto_aead_chacha20poly1305_ietf_encrypt(unsigned char *c,
|
||||
int ret;
|
||||
|
||||
if (mlen > UINT64_MAX - crypto_aead_chacha20poly1305_ietf_ABYTES) {
|
||||
sodium_misuse("crypto_aead_chacha20poly1305_ietf_encrypt(): message too long");
|
||||
sodium_misuse();
|
||||
}
|
||||
ret = crypto_aead_chacha20poly1305_ietf_encrypt_detached(c,
|
||||
c + mlen, NULL,
|
||||
|
||||
@@ -54,7 +54,7 @@ crypto_aead_xchacha20poly1305_ietf_encrypt(unsigned char *c,
|
||||
int ret;
|
||||
|
||||
if (mlen > UINT64_MAX - crypto_aead_xchacha20poly1305_ietf_ABYTES) {
|
||||
sodium_misuse("crypto_aead_xchacha20poly1305_ietf_encrypt(): message too long");
|
||||
sodium_misuse();
|
||||
}
|
||||
ret = crypto_aead_xchacha20poly1305_ietf_encrypt_detached
|
||||
(c, c + mlen, NULL, m, mlen, ad, adlen, nsec, npub, k);
|
||||
|
||||
@@ -192,7 +192,7 @@ blake2b_init(blake2b_state *S, const uint8_t outlen)
|
||||
blake2b_param P[1];
|
||||
|
||||
if ((!outlen) || (outlen > BLAKE2B_OUTBYTES)) {
|
||||
sodium_misuse("blake2b_init(): unsupported output length");
|
||||
sodium_misuse();
|
||||
}
|
||||
P->digest_length = outlen;
|
||||
P->key_length = 0;
|
||||
@@ -215,7 +215,7 @@ blake2b_init_salt_personal(blake2b_state *S, const uint8_t outlen,
|
||||
blake2b_param P[1];
|
||||
|
||||
if ((!outlen) || (outlen > BLAKE2B_OUTBYTES)) {
|
||||
sodium_misuse("blake2b_init_salt_personal(): unsupported output length");
|
||||
sodium_misuse();
|
||||
}
|
||||
P->digest_length = outlen;
|
||||
P->key_length = 0;
|
||||
@@ -246,10 +246,10 @@ blake2b_init_key(blake2b_state *S, const uint8_t outlen, const void *key,
|
||||
blake2b_param P[1];
|
||||
|
||||
if ((!outlen) || (outlen > BLAKE2B_OUTBYTES)) {
|
||||
sodium_misuse("blake2b_init_key(): unsupported output length");
|
||||
sodium_misuse();
|
||||
}
|
||||
if (!key || !keylen || keylen > BLAKE2B_KEYBYTES) {
|
||||
sodium_misuse("blake2b_init_key(): unsupported key length");
|
||||
sodium_misuse();
|
||||
}
|
||||
P->digest_length = outlen;
|
||||
P->key_length = keylen;
|
||||
@@ -264,7 +264,7 @@ blake2b_init_key(blake2b_state *S, const uint8_t outlen, const void *key,
|
||||
memset(P->personal, 0, sizeof(P->personal));
|
||||
|
||||
if (blake2b_init_param(S, P) < 0) {
|
||||
sodium_misuse("blake2b_init_key(): invalid parameters");
|
||||
sodium_misuse();
|
||||
}
|
||||
{
|
||||
uint8_t block[BLAKE2B_BLOCKBYTES];
|
||||
@@ -284,10 +284,10 @@ blake2b_init_key_salt_personal(blake2b_state *S, const uint8_t outlen,
|
||||
blake2b_param P[1];
|
||||
|
||||
if ((!outlen) || (outlen > BLAKE2B_OUTBYTES)) {
|
||||
sodium_misuse("blake2b_init_key_salt_personal(): unsupported output length");
|
||||
sodium_misuse();
|
||||
}
|
||||
if (!key || !keylen || keylen > BLAKE2B_KEYBYTES) {
|
||||
sodium_misuse("blake2b_init_key_salt_personal(): unsupported key length");
|
||||
sodium_misuse();
|
||||
}
|
||||
P->digest_length = outlen;
|
||||
P->key_length = keylen;
|
||||
@@ -310,7 +310,7 @@ blake2b_init_key_salt_personal(blake2b_state *S, const uint8_t outlen,
|
||||
}
|
||||
|
||||
if (blake2b_init_param(S, P) < 0) {
|
||||
sodium_misuse("blake2b_init_key_salt_personal(): invalid parameters");
|
||||
sodium_misuse();
|
||||
}
|
||||
{
|
||||
uint8_t block[BLAKE2B_BLOCKBYTES];
|
||||
@@ -356,7 +356,7 @@ int
|
||||
blake2b_final(blake2b_state *S, uint8_t *out, uint8_t outlen)
|
||||
{
|
||||
if (!outlen || outlen > BLAKE2B_OUTBYTES) {
|
||||
sodium_misuse("blake2b_final(): unsupported output length");
|
||||
sodium_misuse();
|
||||
}
|
||||
if (blake2b_is_lastblock(S)) {
|
||||
return -1;
|
||||
@@ -403,27 +403,27 @@ blake2b(uint8_t *out, const void *in, const void *key, const uint8_t outlen,
|
||||
|
||||
/* Verify parameters */
|
||||
if (NULL == in && inlen > 0) {
|
||||
sodium_misuse("blake2b(): NULL input, but length > 0");
|
||||
sodium_misuse();
|
||||
}
|
||||
if (NULL == out) {
|
||||
sodium_misuse("blake2b(): NULL output pointer");
|
||||
sodium_misuse();
|
||||
}
|
||||
if (!outlen || outlen > BLAKE2B_OUTBYTES) {
|
||||
sodium_misuse("blake2b(): unsupported output length");
|
||||
sodium_misuse();
|
||||
}
|
||||
if (NULL == key && keylen > 0) {
|
||||
sodium_misuse("blake2b(): NULL key, but key length > 0");
|
||||
sodium_misuse();
|
||||
}
|
||||
if (keylen > BLAKE2B_KEYBYTES) {
|
||||
sodium_misuse("blake2b(): unsupported key length");
|
||||
sodium_misuse();
|
||||
}
|
||||
if (keylen > 0) {
|
||||
if (blake2b_init_key(S, outlen, key, keylen) < 0) {
|
||||
sodium_misuse("blake2b(): invalid parameters");
|
||||
sodium_misuse();
|
||||
}
|
||||
} else {
|
||||
if (blake2b_init(S, outlen) < 0) {
|
||||
sodium_misuse("blake2b(): invalid parameters");
|
||||
sodium_misuse();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -441,28 +441,28 @@ blake2b_salt_personal(uint8_t *out, const void *in, const void *key,
|
||||
|
||||
/* Verify parameters */
|
||||
if (NULL == in && inlen > 0) {
|
||||
sodium_misuse("blake2b_salt_personal(): NULL input, but length > 0");
|
||||
sodium_misuse();
|
||||
}
|
||||
if (NULL == out) {
|
||||
sodium_misuse("blake2b_salt_personal(): NULL output pointer");
|
||||
sodium_misuse();
|
||||
}
|
||||
if (!outlen || outlen > BLAKE2B_OUTBYTES) {
|
||||
sodium_misuse("blake2b_salt_personal(): unsupported output length");
|
||||
sodium_misuse();
|
||||
}
|
||||
if (NULL == key && keylen > 0) {
|
||||
sodium_misuse("blake2b_salt_personal(): NULL key, but key length > 0");
|
||||
sodium_misuse();
|
||||
}
|
||||
if (keylen > BLAKE2B_KEYBYTES) {
|
||||
sodium_misuse("blake2b_salt_personal(): unsupported key length");
|
||||
sodium_misuse();
|
||||
}
|
||||
if (keylen > 0) {
|
||||
if (blake2b_init_key_salt_personal(S, outlen, key, keylen, salt,
|
||||
personal) < 0) {
|
||||
sodium_misuse("blake2b_salt_personal(): invalid parameters");
|
||||
sodium_misuse();
|
||||
}
|
||||
} else {
|
||||
if (blake2b_init_salt_personal(S, outlen, salt, personal) < 0) {
|
||||
sodium_misuse("blake2b_salt_personal(): invalid parameters");
|
||||
sodium_misuse();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ crypto_kx_client_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES],
|
||||
tx = rx;
|
||||
}
|
||||
if (rx == NULL) {
|
||||
sodium_misuse("crypto_kx_client_session_keys(): no pointers given"); /* LCOV_EXCL_LINE */
|
||||
sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||
}
|
||||
if (crypto_scalarmult(q, client_sk, server_pk) != 0) {
|
||||
return -1;
|
||||
@@ -90,7 +90,7 @@ crypto_kx_server_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES],
|
||||
tx = rx;
|
||||
}
|
||||
if (rx == NULL) {
|
||||
sodium_misuse("crypto_kx_server_session_keys(): no pointers given"); /* LCOV_EXCL_LINE */
|
||||
sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||
}
|
||||
if (crypto_scalarmult(q, server_sk, client_pk) != 0) {
|
||||
return -1;
|
||||
|
||||
@@ -57,7 +57,7 @@ PBKDF2_SHA256(const uint8_t *passwd, size_t passwdlen, const uint8_t *salt,
|
||||
|
||||
#if SIZE_MAX > 0x1fffffffe0ULL
|
||||
if (dkLen > 0x1fffffffe0ULL) {
|
||||
sodium_misuse("PBKDF2_SHA256(): derived key length is too large"); /* LCOV_EXCL_LINE */
|
||||
sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||
}
|
||||
#endif
|
||||
crypto_auth_hmacsha256_init(&PShctx, passwd, passwdlen);
|
||||
|
||||
@@ -78,7 +78,7 @@ chacha20_encrypt_bytes(chacha_ctx *ctx, const uint8_t *m, uint8_t *c,
|
||||
return; /* LCOV_EXCL_LINE */
|
||||
}
|
||||
if (bytes > 64ULL * (1ULL << 32) - 64ULL) {
|
||||
sodium_misuse("chacha20_encrypt_bytes(): message too long");
|
||||
sodium_misuse();
|
||||
}
|
||||
# include "u8.h"
|
||||
# include "u4.h"
|
||||
|
||||
@@ -73,7 +73,7 @@ chacha20_encrypt_bytes(chacha_ctx *ctx, const uint8_t *m, uint8_t *c,
|
||||
return; /* LCOV_EXCL_LINE */
|
||||
}
|
||||
if (bytes > 64ULL * (1ULL << 32) - 64ULL) {
|
||||
sodium_misuse("chacha20_encrypt_bytes(): message too long");
|
||||
sodium_misuse();
|
||||
}
|
||||
# include "u4.h"
|
||||
# include "u1.h"
|
||||
|
||||
@@ -93,7 +93,7 @@ chacha20_encrypt_bytes(chacha_ctx *ctx, const uint8_t *m, uint8_t *c,
|
||||
return; /* LCOV_EXCL_LINE */
|
||||
}
|
||||
if (bytes > 64ULL * (1ULL << 32) - 64ULL) {
|
||||
sodium_misuse("chacha20_encrypt_bytes(): message too long");
|
||||
sodium_misuse();
|
||||
}
|
||||
j0 = ctx->input[0];
|
||||
j1 = ctx->input[1];
|
||||
|
||||
@@ -15,10 +15,10 @@ int sodium_init(void)
|
||||
/* ---- */
|
||||
|
||||
SODIUM_EXPORT
|
||||
int sodium_set_misuse_handler(void (*handler)(const char *err));
|
||||
int sodium_set_misuse_handler(void (*handler)(void));
|
||||
|
||||
SODIUM_EXPORT
|
||||
void sodium_misuse(const char *err)
|
||||
void sodium_misuse(void)
|
||||
__attribute__ ((noreturn));
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -21,12 +21,12 @@ randombytes_nativeclient_buf(void * const buf, const size_t size)
|
||||
|
||||
if (nacl_interface_query(NACL_IRT_RANDOM_v0_1, &rand_intf,
|
||||
sizeof rand_intf) != sizeof rand_intf) {
|
||||
sodium_misuse("randombytes_nativeclient_buf(): NaCl IRT_RANDOM API failed");
|
||||
sodium_misuse();
|
||||
}
|
||||
while (toread > (size_t) 0U) {
|
||||
if (rand_intf.get_random_bytes(buf_, size, &readnb) != 0 ||
|
||||
readnb > size) {
|
||||
sodium_misuse("randombytes_nativeclient_buf(): NaCl IRT_RANDOM API didn't return the correct amount of bytes");
|
||||
sodium_misuse();
|
||||
}
|
||||
toread -= readnb;
|
||||
buf_ += readnb;
|
||||
|
||||
@@ -173,7 +173,7 @@ randombytes_buf_deterministic(void * const buf, const size_t size,
|
||||
COMPILER_ASSERT(randombytes_SEEDBYTES == crypto_stream_chacha20_ietf_KEYBYTES);
|
||||
#if SIZE_MAX > 0x4000000000ULL
|
||||
if (size > 0x4000000000ULL) {
|
||||
sodium_misuse("randombytes_buf_deterministic(): length shouldn't exceed 0x4000000000");
|
||||
sodium_misuse();
|
||||
}
|
||||
#endif
|
||||
crypto_stream_chacha20_ietf((unsigned char *) buf, (unsigned long long) size,
|
||||
|
||||
@@ -99,7 +99,7 @@ sodium_hrtime(void)
|
||||
struct timeval tv;
|
||||
|
||||
if (gettimeofday(&tv, NULL) != 0) {
|
||||
sodium_misuse("sodium_hrtime(): gettimeofday() failed"); /* LCOV_EXCL_LINE */
|
||||
sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||
}
|
||||
ts = ((uint64_t) tv.tv_sec) * 1000000U + (uint64_t) tv.tv_usec;
|
||||
}
|
||||
@@ -278,7 +278,7 @@ randombytes_salsa20_random_init(void)
|
||||
|
||||
if ((stream.random_data_source_fd =
|
||||
randombytes_salsa20_random_random_dev_open()) == -1) {
|
||||
sodium_misuse("randombytes_salsa20_random_init(): unable to open the random device"); /* LCOV_EXCL_LINE */
|
||||
sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||
}
|
||||
errno = errno_save;
|
||||
# endif /* HAVE_SAFE_ARC4RANDOM */
|
||||
@@ -332,24 +332,24 @@ randombytes_salsa20_random_stir(void)
|
||||
# elif defined(SYS_getrandom) && defined(__NR_getrandom)
|
||||
if (stream.getrandom_available != 0) {
|
||||
if (randombytes_linux_getrandom(m0, sizeof m0) != 0) {
|
||||
sodium_misuse("randombytes_salsa20_random_stir(): linux getrandom() failed"); /* LCOV_EXCL_LINE */
|
||||
sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||
}
|
||||
} else if (stream.random_data_source_fd == -1 ||
|
||||
safe_read(stream.random_data_source_fd, m0,
|
||||
sizeof m0) != (ssize_t) sizeof m0) {
|
||||
sodium_misuse("randombytes_salsa20_random_stir(): unable to read from the random device"); /* LCOV_EXCL_LINE */
|
||||
sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||
}
|
||||
# else
|
||||
if (stream.random_data_source_fd == -1 ||
|
||||
safe_read(stream.random_data_source_fd, m0,
|
||||
sizeof m0) != (ssize_t) sizeof m0) {
|
||||
sodium_misuse("randombytes_salsa20_random_stir(): unable to read from the random device"); /* LCOV_EXCL_LINE */
|
||||
sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||
}
|
||||
# endif
|
||||
|
||||
#else /* _WIN32 */
|
||||
if (! RtlGenRandom((PVOID) m0, (ULONG) sizeof m0)) {
|
||||
sodium_misuse("randombytes_salsa20_random_stir(): RtlGenRandom() failed"); /* LCOV_EXCL_LINE */
|
||||
sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||
}
|
||||
#endif
|
||||
if (crypto_generichash(stream.key, sizeof stream.key, k0, sizeof_k0,
|
||||
@@ -371,7 +371,7 @@ randombytes_salsa20_random_stir_if_needed(void)
|
||||
if (stream.initialized == 0) {
|
||||
randombytes_salsa20_random_stir();
|
||||
} else if (stream.pid != getpid()) {
|
||||
sodium_misuse("randombytes_salsa20_random_stir_if_needed(): stirring is required after fork()"); /* LCOV_EXCL_LINE */
|
||||
sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||
}
|
||||
#else
|
||||
if (stream.initialized == 0) {
|
||||
|
||||
@@ -254,7 +254,7 @@ randombytes_sysrandom_init(void)
|
||||
|
||||
if ((stream.random_data_source_fd =
|
||||
randombytes_sysrandom_random_dev_open()) == -1) {
|
||||
sodium_misuse("randombytes_sysrandom_init(): unable to open the random device"); /* LCOV_EXCL_LINE */
|
||||
sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||
}
|
||||
errno = errno_save;
|
||||
}
|
||||
@@ -324,21 +324,21 @@ randombytes_sysrandom_buf(void * const buf, const size_t size)
|
||||
# if defined(SYS_getrandom) && defined(__NR_getrandom)
|
||||
if (stream.getrandom_available != 0) {
|
||||
if (randombytes_linux_getrandom(buf, size) != 0) {
|
||||
sodium_misuse("randombytes_sysrandom_buf(): linux getrandom() failed"); /* LCOV_EXCL_LINE */
|
||||
sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||
}
|
||||
return;
|
||||
}
|
||||
# endif
|
||||
if (stream.random_data_source_fd == -1 ||
|
||||
safe_read(stream.random_data_source_fd, buf, size) != (ssize_t) size) {
|
||||
sodium_misuse("randombytes_sysrandom_buf(): unable to read the random device"); /* LCOV_EXCL_LINE */
|
||||
sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||
}
|
||||
#else
|
||||
if (size > (size_t) 0xffffffff) {
|
||||
sodium_misuse("randombytes_sysrandom_buf(): cannot read more than 0xffffffff bytes at a time"); /* LCOV_EXCL_LINE */
|
||||
sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||
}
|
||||
if (! RtlGenRandom((PVOID) buf, (ULONG) size)) {
|
||||
sodium_misuse("randombytes_sysrandom_buf(): RtlGenRandom() failed"); /* LCOV_EXCL_LINE */
|
||||
sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -171,24 +171,24 @@ sodium_crit_leave(void)
|
||||
|
||||
#endif
|
||||
|
||||
static void (*_misuse_handler)(const char *err);
|
||||
static void (*_misuse_handler)(void);
|
||||
|
||||
void
|
||||
sodium_misuse(const char *err)
|
||||
sodium_misuse(void)
|
||||
{
|
||||
void (*handler)(const char *err);
|
||||
void (*handler)(void);
|
||||
|
||||
if (sodium_crit_enter() == 0) {
|
||||
handler = _misuse_handler;
|
||||
if (sodium_crit_leave() == 0 && handler != NULL) {
|
||||
handler(err);
|
||||
handler();
|
||||
}
|
||||
}
|
||||
abort();
|
||||
}
|
||||
|
||||
int
|
||||
sodium_set_misuse_handler(void (*handler)(const char *err))
|
||||
sodium_set_misuse_handler(void (*handler)(void))
|
||||
{
|
||||
if (sodium_crit_enter() != 0) {
|
||||
return -1; /* LCOV_EXCL_LINE */
|
||||
|
||||
@@ -80,7 +80,7 @@ sodium_memzero(void *const pnt, const size_t len)
|
||||
SecureZeroMemory(pnt, len);
|
||||
#elif defined(HAVE_MEMSET_S)
|
||||
if (len > 0U && memset_s(pnt, (rsize_t) len, 0, (rsize_t) len) != 0) {
|
||||
sodium_misuse("sodium_memzero(): length is more than RSIZE_MAX"); /* LCOV_EXCL_LINE */
|
||||
sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||
}
|
||||
#elif defined(HAVE_EXPLICIT_BZERO)
|
||||
explicit_bzero(pnt, len);
|
||||
@@ -301,7 +301,7 @@ sodium_bin2hex(char *const hex, const size_t hex_maxlen,
|
||||
int c;
|
||||
|
||||
if (bin_len >= SIZE_MAX / 2 || hex_maxlen <= bin_len * 2U) {
|
||||
sodium_misuse("sodium_bin2hex(): invalid length"); /* LCOV_EXCL_LINE */
|
||||
sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||
}
|
||||
while (i < bin_len) {
|
||||
c = bin[i] & 0xf;
|
||||
@@ -388,7 +388,7 @@ _sodium_alloc_init(void)
|
||||
page_size = (size_t) si.dwPageSize;
|
||||
# endif
|
||||
if (page_size < CANARY_SIZE || page_size < sizeof(size_t)) {
|
||||
sodium_misuse("_sodium_alloc_init(): page size is smaller than the canary size"); /* LCOV_EXCL_LINE */
|
||||
sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||
}
|
||||
#endif
|
||||
randombytes_buf(canary, sizeof canary);
|
||||
@@ -540,7 +540,7 @@ _unprotected_ptr_from_user_ptr(void *const ptr)
|
||||
page_mask = page_size - 1U;
|
||||
unprotected_ptr_u = ((uintptr_t) canary_ptr & (uintptr_t) ~page_mask);
|
||||
if (unprotected_ptr_u <= page_size * 2U) {
|
||||
sodium_misuse("_unprotected_ptr_from_user_ptr(): invalid pointer (too low)"); /* LCOV_EXCL_LINE */
|
||||
sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||
}
|
||||
return (unsigned char *) unprotected_ptr_u;
|
||||
}
|
||||
@@ -570,7 +570,7 @@ _sodium_malloc(const size_t size)
|
||||
return NULL;
|
||||
}
|
||||
if (page_size <= sizeof canary || page_size < sizeof unprotected_size) {
|
||||
sodium_misuse("_sodium_malloc(): page size too small"); /* LCOV_EXCL_LINE */
|
||||
sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||
}
|
||||
size_with_canary = (sizeof canary) + size;
|
||||
unprotected_size = _page_round(size_with_canary);
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
#include "cmptest.h"
|
||||
|
||||
static void
|
||||
misuse_handler(const char *err)
|
||||
misuse_handler(void)
|
||||
{
|
||||
printf("misuse_handler(): [%s]\n", err);
|
||||
printf("misuse_handler()\n");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ main(void)
|
||||
sodium_set_misuse_handler(misuse_handler);
|
||||
sodium_set_misuse_handler(NULL);
|
||||
|
||||
printf("%d\n", sodium_init());
|
||||
assert(sodium_init() == 1);
|
||||
|
||||
(void) sodium_runtime_has_neon();
|
||||
(void) sodium_runtime_has_sse2();
|
||||
@@ -27,7 +27,7 @@ main(void)
|
||||
(void) sodium_runtime_has_aesni();
|
||||
|
||||
sodium_set_misuse_handler(misuse_handler);
|
||||
sodium_misuse("TEST");
|
||||
sodium_misuse();
|
||||
printf("Misuse handler returned\n");
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -1 +1 @@
|
||||
1
|
||||
misuse_handler()
|
||||
|
||||
Reference in New Issue
Block a user