diff options
author | Colin Watson <cjwatson@debian.org> | 2014-10-07 13:33:15 +0100 |
---|---|---|
committer | Colin Watson <cjwatson@debian.org> | 2014-10-07 14:27:30 +0100 |
commit | f0b009aea83e9ff3a50be30f51012099a5143c16 (patch) | |
tree | 3825e6f7e3b7ea4481d06ed89aba9a7a95150df5 /regress/unittests/test_helper/test_helper.h | |
parent | 47f0bad4330b16ec3bad870fcf9839c196e42c12 (diff) | |
parent | 762c062828f5a8f6ed189ed6e44ad38fd92f8b36 (diff) |
Merge 6.7p1.
* New upstream release (http://www.openssh.com/txt/release-6.7):
- sshd(8): The default set of ciphers and MACs has been altered to
remove unsafe algorithms. In particular, CBC ciphers and arcfour* are
disabled by default. The full set of algorithms remains available if
configured explicitly via the Ciphers and MACs sshd_config options.
- ssh(1), sshd(8): Add support for Unix domain socket forwarding. A
remote TCP port may be forwarded to a local Unix domain socket and
vice versa or both ends may be a Unix domain socket (closes: #236718).
- ssh(1), ssh-keygen(1): Add support for SSHFP DNS records for ED25519
key types.
- sftp(1): Allow resumption of interrupted uploads.
- ssh(1): When rekeying, skip file/DNS lookups of the hostkey if it is
the same as the one sent during initial key exchange.
- sshd(8): Allow explicit ::1 and 127.0.0.1 forwarding bind addresses
when GatewayPorts=no; allows client to choose address family.
- sshd(8): Add a sshd_config PermitUserRC option to control whether
~/.ssh/rc is executed, mirroring the no-user-rc authorized_keys
option.
- ssh(1): Add a %C escape sequence for LocalCommand and ControlPath that
expands to a unique identifer based on a hash of the tuple of (local
host, remote user, hostname, port). Helps avoid exceeding miserly
pathname limits for Unix domain sockets in multiplexing control paths.
- sshd(8): Make the "Too many authentication failures" message include
the user, source address, port and protocol in a format similar to the
authentication success / failure messages.
- Use CLOCK_BOOTTIME in preference to CLOCK_MONOTONIC when it is
available. It considers time spent suspended, thereby ensuring
timeouts (e.g. for expiring agent keys) fire correctly (closes:
#734553).
- Use prctl() to prevent sftp-server from accessing
/proc/self/{mem,maps}.
* Restore TCP wrappers support, removed upstream in 6.7. It is true that
dropping this reduces preauth attack surface in sshd. On the other
hand, this support seems to be quite widely used, and abruptly dropping
it (from the perspective of users who don't read openssh-unix-dev) could
easily cause more serious problems in practice. It's not entirely clear
what the right long-term answer for Debian is, but it at least probably
doesn't involve dropping this feature shortly before a freeze.
* Replace patch to disable OpenSSL version check with an updated version
of Kurt Roeckx's patch from #732940 to just avoid checking the status
field.
Diffstat (limited to 'regress/unittests/test_helper/test_helper.h')
-rw-r--r-- | regress/unittests/test_helper/test_helper.h | 292 |
1 files changed, 292 insertions, 0 deletions
diff --git a/regress/unittests/test_helper/test_helper.h b/regress/unittests/test_helper/test_helper.h new file mode 100644 index 000000000..a398c615f --- /dev/null +++ b/regress/unittests/test_helper/test_helper.h | |||
@@ -0,0 +1,292 @@ | |||
1 | /* $OpenBSD: test_helper.h,v 1.3 2014/05/02 09:41:32 andre Exp $ */ | ||
2 | /* | ||
3 | * Copyright (c) 2011 Damien Miller <djm@mindrot.org> | ||
4 | * | ||
5 | * Permission to use, copy, modify, and distribute this software for any | ||
6 | * purpose with or without fee is hereby granted, provided that the above | ||
7 | * copyright notice and this permission notice appear in all copies. | ||
8 | * | ||
9 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
10 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
11 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
12 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
13 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
14 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
15 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
16 | */ | ||
17 | |||
18 | /* Utility functions/framework for regress tests */ | ||
19 | |||
20 | #ifndef _TEST_HELPER_H | ||
21 | #define _TEST_HELPER_H | ||
22 | |||
23 | #include "includes.h" | ||
24 | |||
25 | #include <sys/types.h> | ||
26 | #ifdef HAVE_STDINT_H | ||
27 | # include <stdint.h> | ||
28 | #endif | ||
29 | |||
30 | #include <openssl/bn.h> | ||
31 | #include <openssl/err.h> | ||
32 | |||
33 | enum test_predicate { | ||
34 | TEST_EQ, TEST_NE, TEST_LT, TEST_LE, TEST_GT, TEST_GE | ||
35 | }; | ||
36 | typedef void (test_onerror_func_t)(void *); | ||
37 | |||
38 | /* Supplied by test suite */ | ||
39 | void tests(void); | ||
40 | |||
41 | const char *test_data_file(const char *name); | ||
42 | void test_start(const char *n); | ||
43 | void set_onerror_func(test_onerror_func_t *f, void *ctx); | ||
44 | void test_done(void); | ||
45 | void ssl_err_check(const char *file, int line); | ||
46 | void assert_bignum(const char *file, int line, | ||
47 | const char *a1, const char *a2, | ||
48 | const BIGNUM *aa1, const BIGNUM *aa2, enum test_predicate pred); | ||
49 | void assert_string(const char *file, int line, | ||
50 | const char *a1, const char *a2, | ||
51 | const char *aa1, const char *aa2, enum test_predicate pred); | ||
52 | void assert_mem(const char *file, int line, | ||
53 | const char *a1, const char *a2, | ||
54 | const void *aa1, const void *aa2, size_t l, enum test_predicate pred); | ||
55 | void assert_mem_filled(const char *file, int line, | ||
56 | const char *a1, | ||
57 | const void *aa1, u_char v, size_t l, enum test_predicate pred); | ||
58 | void assert_int(const char *file, int line, | ||
59 | const char *a1, const char *a2, | ||
60 | int aa1, int aa2, enum test_predicate pred); | ||
61 | void assert_size_t(const char *file, int line, | ||
62 | const char *a1, const char *a2, | ||
63 | size_t aa1, size_t aa2, enum test_predicate pred); | ||
64 | void assert_u_int(const char *file, int line, | ||
65 | const char *a1, const char *a2, | ||
66 | u_int aa1, u_int aa2, enum test_predicate pred); | ||
67 | void assert_long_long(const char *file, int line, | ||
68 | const char *a1, const char *a2, | ||
69 | long long aa1, long long aa2, enum test_predicate pred); | ||
70 | void assert_char(const char *file, int line, | ||
71 | const char *a1, const char *a2, | ||
72 | char aa1, char aa2, enum test_predicate pred); | ||
73 | void assert_ptr(const char *file, int line, | ||
74 | const char *a1, const char *a2, | ||
75 | const void *aa1, const void *aa2, enum test_predicate pred); | ||
76 | void assert_u8(const char *file, int line, | ||
77 | const char *a1, const char *a2, | ||
78 | u_int8_t aa1, u_int8_t aa2, enum test_predicate pred); | ||
79 | void assert_u16(const char *file, int line, | ||
80 | const char *a1, const char *a2, | ||
81 | u_int16_t aa1, u_int16_t aa2, enum test_predicate pred); | ||
82 | void assert_u32(const char *file, int line, | ||
83 | const char *a1, const char *a2, | ||
84 | u_int32_t aa1, u_int32_t aa2, enum test_predicate pred); | ||
85 | void assert_u64(const char *file, int line, | ||
86 | const char *a1, const char *a2, | ||
87 | u_int64_t aa1, u_int64_t aa2, enum test_predicate pred); | ||
88 | |||
89 | #define TEST_START(n) test_start(n) | ||
90 | #define TEST_DONE() test_done() | ||
91 | #define TEST_ONERROR(f, c) set_onerror_func(f, c) | ||
92 | #define SSL_ERR_CHECK() ssl_err_check(__FILE__, __LINE__) | ||
93 | |||
94 | #define ASSERT_BIGNUM_EQ(a1, a2) \ | ||
95 | assert_bignum(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_EQ) | ||
96 | #define ASSERT_STRING_EQ(a1, a2) \ | ||
97 | assert_string(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_EQ) | ||
98 | #define ASSERT_MEM_EQ(a1, a2, l) \ | ||
99 | assert_mem(__FILE__, __LINE__, #a1, #a2, a1, a2, l, TEST_EQ) | ||
100 | #define ASSERT_MEM_FILLED_EQ(a1, c, l) \ | ||
101 | assert_mem_filled(__FILE__, __LINE__, #a1, a1, c, l, TEST_EQ) | ||
102 | #define ASSERT_MEM_ZERO_EQ(a1, l) \ | ||
103 | assert_mem_filled(__FILE__, __LINE__, #a1, a1, '\0', l, TEST_EQ) | ||
104 | #define ASSERT_INT_EQ(a1, a2) \ | ||
105 | assert_int(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_EQ) | ||
106 | #define ASSERT_SIZE_T_EQ(a1, a2) \ | ||
107 | assert_size_t(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_EQ) | ||
108 | #define ASSERT_U_INT_EQ(a1, a2) \ | ||
109 | assert_u_int(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_EQ) | ||
110 | #define ASSERT_LONG_LONG_EQ(a1, a2) \ | ||
111 | assert_long_long(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_EQ) | ||
112 | #define ASSERT_CHAR_EQ(a1, a2) \ | ||
113 | assert_char(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_EQ) | ||
114 | #define ASSERT_PTR_EQ(a1, a2) \ | ||
115 | assert_ptr(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_EQ) | ||
116 | #define ASSERT_U8_EQ(a1, a2) \ | ||
117 | assert_u8(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_EQ) | ||
118 | #define ASSERT_U16_EQ(a1, a2) \ | ||
119 | assert_u16(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_EQ) | ||
120 | #define ASSERT_U32_EQ(a1, a2) \ | ||
121 | assert_u32(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_EQ) | ||
122 | #define ASSERT_U64_EQ(a1, a2) \ | ||
123 | assert_u64(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_EQ) | ||
124 | |||
125 | #define ASSERT_BIGNUM_NE(a1, a2) \ | ||
126 | assert_bignum(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_NE) | ||
127 | #define ASSERT_STRING_NE(a1, a2) \ | ||
128 | assert_string(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_NE) | ||
129 | #define ASSERT_MEM_NE(a1, a2, l) \ | ||
130 | assert_mem(__FILE__, __LINE__, #a1, #a2, a1, a2, l, TEST_NE) | ||
131 | #define ASSERT_MEM_ZERO_NE(a1, l) \ | ||
132 | assert_mem_filled(__FILE__, __LINE__, #a1, a1, '\0', l, TEST_NE) | ||
133 | #define ASSERT_INT_NE(a1, a2) \ | ||
134 | assert_int(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_NE) | ||
135 | #define ASSERT_SIZE_T_NE(a1, a2) \ | ||
136 | assert_size_t(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_NE) | ||
137 | #define ASSERT_U_INT_NE(a1, a2) \ | ||
138 | assert_u_int(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_NE) | ||
139 | #define ASSERT_LONG_LONG_NE(a1, a2) \ | ||
140 | assert_long_long(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_NE) | ||
141 | #define ASSERT_CHAR_NE(a1, a2) \ | ||
142 | assert_char(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_NE) | ||
143 | #define ASSERT_PTR_NE(a1, a2) \ | ||
144 | assert_ptr(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_NE) | ||
145 | #define ASSERT_U8_NE(a1, a2) \ | ||
146 | assert_u8(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_NE) | ||
147 | #define ASSERT_U16_NE(a1, a2) \ | ||
148 | assert_u16(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_NE) | ||
149 | #define ASSERT_U32_NE(a1, a2) \ | ||
150 | assert_u32(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_NE) | ||
151 | #define ASSERT_U64_NE(a1, a2) \ | ||
152 | assert_u64(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_NE) | ||
153 | |||
154 | #define ASSERT_BIGNUM_LT(a1, a2) \ | ||
155 | assert_bignum(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LT) | ||
156 | #define ASSERT_STRING_LT(a1, a2) \ | ||
157 | assert_string(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LT) | ||
158 | #define ASSERT_MEM_LT(a1, a2, l) \ | ||
159 | assert_mem(__FILE__, __LINE__, #a1, #a2, a1, a2, l, TEST_LT) | ||
160 | #define ASSERT_INT_LT(a1, a2) \ | ||
161 | assert_int(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LT) | ||
162 | #define ASSERT_SIZE_T_LT(a1, a2) \ | ||
163 | assert_size_t(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LT) | ||
164 | #define ASSERT_U_INT_LT(a1, a2) \ | ||
165 | assert_u_int(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LT) | ||
166 | #define ASSERT_LONG_LONG_LT(a1, a2) \ | ||
167 | assert_long_long(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LT) | ||
168 | #define ASSERT_CHAR_LT(a1, a2) \ | ||
169 | assert_char(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LT) | ||
170 | #define ASSERT_PTR_LT(a1, a2) \ | ||
171 | assert_ptr(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LT) | ||
172 | #define ASSERT_U8_LT(a1, a2) \ | ||
173 | assert_u8(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LT) | ||
174 | #define ASSERT_U16_LT(a1, a2) \ | ||
175 | assert_u16(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LT) | ||
176 | #define ASSERT_U32_LT(a1, a2) \ | ||
177 | assert_u32(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LT) | ||
178 | #define ASSERT_U64_LT(a1, a2) \ | ||
179 | assert_u64(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LT) | ||
180 | |||
181 | #define ASSERT_BIGNUM_LE(a1, a2) \ | ||
182 | assert_bignum(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LE) | ||
183 | #define ASSERT_STRING_LE(a1, a2) \ | ||
184 | assert_string(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LE) | ||
185 | #define ASSERT_MEM_LE(a1, a2, l) \ | ||
186 | assert_mem(__FILE__, __LINE__, #a1, #a2, a1, a2, l, TEST_LE) | ||
187 | #define ASSERT_INT_LE(a1, a2) \ | ||
188 | assert_int(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LE) | ||
189 | #define ASSERT_SIZE_T_LE(a1, a2) \ | ||
190 | assert_size_t(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LE) | ||
191 | #define ASSERT_U_INT_LE(a1, a2) \ | ||
192 | assert_u_int(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LE) | ||
193 | #define ASSERT_LONG_LONG_LE(a1, a2) \ | ||
194 | assert_long_long(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LE) | ||
195 | #define ASSERT_CHAR_LE(a1, a2) \ | ||
196 | assert_char(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LE) | ||
197 | #define ASSERT_PTR_LE(a1, a2) \ | ||
198 | assert_ptr(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LE) | ||
199 | #define ASSERT_U8_LE(a1, a2) \ | ||
200 | assert_u8(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LE) | ||
201 | #define ASSERT_U16_LE(a1, a2) \ | ||
202 | assert_u16(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LE) | ||
203 | #define ASSERT_U32_LE(a1, a2) \ | ||
204 | assert_u32(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LE) | ||
205 | #define ASSERT_U64_LE(a1, a2) \ | ||
206 | assert_u64(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LE) | ||
207 | |||
208 | #define ASSERT_BIGNUM_GT(a1, a2) \ | ||
209 | assert_bignum(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GT) | ||
210 | #define ASSERT_STRING_GT(a1, a2) \ | ||
211 | assert_string(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GT) | ||
212 | #define ASSERT_MEM_GT(a1, a2, l) \ | ||
213 | assert_mem(__FILE__, __LINE__, #a1, #a2, a1, a2, l, TEST_GT) | ||
214 | #define ASSERT_INT_GT(a1, a2) \ | ||
215 | assert_int(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GT) | ||
216 | #define ASSERT_SIZE_T_GT(a1, a2) \ | ||
217 | assert_size_t(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GT) | ||
218 | #define ASSERT_U_INT_GT(a1, a2) \ | ||
219 | assert_u_int(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GT) | ||
220 | #define ASSERT_LONG_LONG_GT(a1, a2) \ | ||
221 | assert_long_long(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GT) | ||
222 | #define ASSERT_CHAR_GT(a1, a2) \ | ||
223 | assert_char(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GT) | ||
224 | #define ASSERT_PTR_GT(a1, a2) \ | ||
225 | assert_ptr(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GT) | ||
226 | #define ASSERT_U8_GT(a1, a2) \ | ||
227 | assert_u8(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GT) | ||
228 | #define ASSERT_U16_GT(a1, a2) \ | ||
229 | assert_u16(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GT) | ||
230 | #define ASSERT_U32_GT(a1, a2) \ | ||
231 | assert_u32(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GT) | ||
232 | #define ASSERT_U64_GT(a1, a2) \ | ||
233 | assert_u64(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GT) | ||
234 | |||
235 | #define ASSERT_BIGNUM_GE(a1, a2) \ | ||
236 | assert_bignum(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GE) | ||
237 | #define ASSERT_STRING_GE(a1, a2) \ | ||
238 | assert_string(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GE) | ||
239 | #define ASSERT_MEM_GE(a1, a2, l) \ | ||
240 | assert_mem(__FILE__, __LINE__, #a1, #a2, a1, a2, l, TEST_GE) | ||
241 | #define ASSERT_INT_GE(a1, a2) \ | ||
242 | assert_int(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GE) | ||
243 | #define ASSERT_SIZE_T_GE(a1, a2) \ | ||
244 | assert_size_t(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GE) | ||
245 | #define ASSERT_U_INT_GE(a1, a2) \ | ||
246 | assert_u_int(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GE) | ||
247 | #define ASSERT_LONG_LONG_GE(a1, a2) \ | ||
248 | assert_long_long(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GE) | ||
249 | #define ASSERT_CHAR_GE(a1, a2) \ | ||
250 | assert_char(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GE) | ||
251 | #define ASSERT_PTR_GE(a1, a2) \ | ||
252 | assert_ptr(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GE) | ||
253 | #define ASSERT_U8_GE(a1, a2) \ | ||
254 | assert_u8(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GE) | ||
255 | #define ASSERT_U16_GE(a1, a2) \ | ||
256 | assert_u16(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GE) | ||
257 | #define ASSERT_U32_GE(a1, a2) \ | ||
258 | assert_u32(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GE) | ||
259 | #define ASSERT_U64_GE(a1, a2) \ | ||
260 | assert_u64(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GE) | ||
261 | |||
262 | /* Fuzzing support */ | ||
263 | |||
264 | struct fuzz; | ||
265 | #define FUZZ_1_BIT_FLIP 0x00000001 /* Flip one bit at a time */ | ||
266 | #define FUZZ_2_BIT_FLIP 0x00000002 /* Flip two bits at a time */ | ||
267 | #define FUZZ_1_BYTE_FLIP 0x00000004 /* Flip one byte at a time */ | ||
268 | #define FUZZ_2_BYTE_FLIP 0x00000008 /* Flip two bytes at a time */ | ||
269 | #define FUZZ_TRUNCATE_START 0x00000010 /* Truncate from beginning */ | ||
270 | #define FUZZ_TRUNCATE_END 0x00000020 /* Truncate from end */ | ||
271 | #define FUZZ_BASE64 0x00000040 /* Try all base64 chars */ | ||
272 | #define FUZZ_MAX FUZZ_BASE64 | ||
273 | |||
274 | /* Start fuzzing a blob of data with selected strategies (bitmask) */ | ||
275 | struct fuzz *fuzz_begin(u_int strategies, const void *p, size_t l); | ||
276 | |||
277 | /* Free a fuzz context */ | ||
278 | void fuzz_cleanup(struct fuzz *fuzz); | ||
279 | |||
280 | /* Prepare the next fuzz case in the series */ | ||
281 | void fuzz_next(struct fuzz *fuzz); | ||
282 | |||
283 | /* Determine whether the current fuzz sequence is exhausted (nonzero = yes) */ | ||
284 | int fuzz_done(struct fuzz *fuzz); | ||
285 | |||
286 | /* Return the length and a pointer to the current fuzzed case */ | ||
287 | size_t fuzz_len(struct fuzz *fuzz); | ||
288 | u_char *fuzz_ptr(struct fuzz *fuzz); | ||
289 | |||
290 | /* Dump the current fuzz case to stderr */ | ||
291 | void fuzz_dump(struct fuzz *fuzz); | ||
292 | #endif /* _TEST_HELPER_H */ | ||