1 2 #define TEST_NAME "misuse" 3 #include "cmptest.h" 4 5 #ifdef HAVE_CATCHABLE_ABRT 6 # include <signal.h> 7 8 static void 9 sigabrt_handler_15(int sig) 10 { 11 (void) sig; 12 exit(0); 13 } 14 15 # ifndef SODIUM_LIBRARY_MINIMAL 16 static void 17 sigabrt_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 27 static void 28 sigabrt_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 39 static void 40 sigabrt_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 52 static void 53 sigabrt_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 62 static void 63 sigabrt_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 72 static void 73 sigabrt_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 81 static void 82 sigabrt_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 90 static void 91 sigabrt_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 99 static void 100 sigabrt_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 108 static void 109 sigabrt_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 118 static void 119 sigabrt_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 128 static void 129 sigabrt_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 138 static void 139 sigabrt_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 151 static void 152 sigabrt_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 160 int 161 main(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 168 int 169 main(void) 170 { 171 return 0; 172 } 173 #endif 174