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