1 2#define TEST_NAME "misuse" 3#include "cmptest.h" 4 5#ifdef HAVE_CATCHABLE_ABRT 6# include <signal.h> 7 8static void 9sigabrt_handler_15(int sig) 10{ 11 (void) sig; 12 exit(0); 13} 14 15# ifndef SODIUM_LIBRARY_MINIMAL 16static void 17sigabrt_handler_14(int sig) 18{ 19 (void) sig; 20 signal(SIGABRT, sigabrt_handler_15); 21 assert(crypto_box_curve25519xchacha20poly1305_easy 22 (NULL, NULL, crypto_stream_xchacha20_MESSAGEBYTES_MAX - 1, 23 NULL, NULL, NULL) == -1); 24 exit(1); 25} 26 27static void 28sigabrt_handler_13(int sig) 29{ 30 (void) sig; 31 signal(SIGABRT, sigabrt_handler_14); 32 assert(crypto_box_curve25519xchacha20poly1305_easy_afternm 33 (NULL, NULL, crypto_stream_xchacha20_MESSAGEBYTES_MAX - 1, 34 NULL, NULL) == -1); 35 exit(1); 36} 37# endif 38 39static void 40sigabrt_handler_12(int sig) 41{ 42 (void) sig; 43# ifdef SODIUM_LIBRARY_MINIMAL 44 signal(SIGABRT, sigabrt_handler_15); 45# else 46 signal(SIGABRT, sigabrt_handler_13); 47# endif 48 assert(crypto_pwhash_str_alg(NULL, "", 0U, 1U, 1U, -1) == -1); 49 exit(1); 50} 51 52static void 53sigabrt_handler_11(int sig) 54{ 55 (void) sig; 56 signal(SIGABRT, sigabrt_handler_12); 57 assert(crypto_box_easy(NULL, NULL, crypto_stream_xsalsa20_MESSAGEBYTES_MAX, 58 NULL, NULL, NULL) == -1); 59 exit(1); 60} 61 62static void 63sigabrt_handler_10(int sig) 64{ 65 (void) sig; 66 signal(SIGABRT, sigabrt_handler_11); 67 assert(crypto_box_easy_afternm(NULL, NULL, crypto_stream_xsalsa20_MESSAGEBYTES_MAX, 68 NULL, NULL) == -1); 69 exit(1); 70} 71 72static void 73sigabrt_handler_9(int sig) 74{ 75 (void) sig; 76 signal(SIGABRT, sigabrt_handler_10); 77 assert(sodium_base642bin(NULL, 1, NULL, 1, NULL, NULL, NULL, -1) == -1); 78 exit(1); 79} 80 81static void 82sigabrt_handler_8(int sig) 83{ 84 (void) sig; 85 signal(SIGABRT, sigabrt_handler_9); 86 assert(sodium_bin2base64(NULL, 1, NULL, 1, sodium_base64_VARIANT_ORIGINAL) == NULL); 87 exit(1); 88} 89 90static void 91sigabrt_handler_7(int sig) 92{ 93 (void) sig; 94 signal(SIGABRT, sigabrt_handler_8); 95 assert(sodium_bin2base64(NULL, 1, NULL, 1, -1) == NULL); 96 exit(1); 97} 98 99static void 100sigabrt_handler_6(int sig) 101{ 102 (void) sig; 103 signal(SIGABRT, sigabrt_handler_7); 104 assert(sodium_pad(NULL, NULL, SIZE_MAX, 16, 1) == -1); 105 exit(1); 106} 107 108static void 109sigabrt_handler_5(int sig) 110{ 111 (void) sig; 112 signal(SIGABRT, sigabrt_handler_6); 113 assert(crypto_aead_xchacha20poly1305_ietf_encrypt(NULL, NULL, NULL, UINT64_MAX, 114 NULL, 0, NULL, NULL, NULL) == -1); 115 exit(1); 116} 117 118static void 119sigabrt_handler_4(int sig) 120{ 121 (void) sig; 122 signal(SIGABRT, sigabrt_handler_5); 123 assert(crypto_aead_chacha20poly1305_ietf_encrypt(NULL, NULL, NULL, UINT64_MAX, 124 NULL, 0, NULL, NULL, NULL) == -1); 125 exit(1); 126} 127 128static void 129sigabrt_handler_3(int sig) 130{ 131 (void) sig; 132 signal(SIGABRT, sigabrt_handler_4); 133 assert(crypto_aead_chacha20poly1305_encrypt(NULL, NULL, NULL, UINT64_MAX, 134 NULL, 0, NULL, NULL, NULL) == -1); 135 exit(1); 136} 137 138static void 139sigabrt_handler_2(int sig) 140{ 141 (void) sig; 142 signal(SIGABRT, sigabrt_handler_3); 143#if SIZE_MAX > 0x4000000000ULL 144 randombytes_buf_deterministic(NULL, 0x4000000001ULL, NULL); 145#else 146 abort(); 147#endif 148 exit(1); 149} 150 151static void 152sigabrt_handler_1(int sig) 153{ 154 (void) sig; 155 signal(SIGABRT, sigabrt_handler_2); 156 assert(crypto_kx_server_session_keys(NULL, NULL, NULL, NULL, NULL) == -1); 157 exit(1); 158} 159 160int 161main(void) 162{ 163 signal(SIGABRT, sigabrt_handler_1); 164 assert(crypto_kx_client_session_keys(NULL, NULL, NULL, NULL, NULL) == -1); 165 return 1; 166} 167#else 168int 169main(void) 170{ 171 return 0; 172} 173#endif 174