Mercurial > dropbear
annotate fuzz.h @ 1385:6c92e97553f1 fuzz
Add a flag whether to longjmp, missed that last commit
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Thu, 01 Jun 2017 21:30:26 +0800 |
parents | f03cfe9c76ac |
children | a90fdd2d2ed8 |
rev | line source |
---|---|
1348 | 1 #ifndef DROPBEAR_FUZZ_H |
2 #define DROPBEAR_FUZZ_H | |
3 | |
1357 | 4 #include "config.h" |
5 #ifdef DROPBEAR_FUZZ | |
6 | |
1348 | 7 #include "includes.h" |
8 #include "buffer.h" | |
1357 | 9 #include "algo.h" |
10 #include "fuzz-wrapfd.h" | |
1348 | 11 |
1356
3677a510f545
add wrapfd. improve fuzzer in makefile
Matt Johnston <matt@ucc.asn.au>
parents:
1348
diff
changeset
|
12 // once per process |
1369 | 13 void common_setup_fuzzer(void); |
1348 | 14 void svr_setup_fuzzer(void); |
15 | |
1377
d4cc85e6c569
rearrange, all fuzzers now call fuzzer_set_input()
Matt Johnston <matt@ucc.asn.au>
parents:
1369
diff
changeset
|
16 // must be called once per fuzz iteration. |
d4cc85e6c569
rearrange, all fuzzers now call fuzzer_set_input()
Matt Johnston <matt@ucc.asn.au>
parents:
1369
diff
changeset
|
17 // returns DROPBEAR_SUCCESS or DROPBEAR_FAILURE |
1356
3677a510f545
add wrapfd. improve fuzzer in makefile
Matt Johnston <matt@ucc.asn.au>
parents:
1348
diff
changeset
|
18 int fuzzer_set_input(const uint8_t *Data, size_t Size); |
3677a510f545
add wrapfd. improve fuzzer in makefile
Matt Johnston <matt@ucc.asn.au>
parents:
1348
diff
changeset
|
19 |
1369 | 20 // fuzzer functions that intrude into general code |
1357 | 21 void fuzz_kex_fakealgos(void); |
1369 | 22 int fuzz_checkpubkey_line(buffer* line, int line_num, char* filename, |
23 const char* algo, unsigned int algolen, | |
24 const unsigned char* keyblob, unsigned int keybloblen); | |
25 extern const char * const * fuzz_signkey_names; | |
26 void fuzz_seed(void); | |
1383
f03cfe9c76ac
Disable setnonblocking(), get_socket_address(), set_sock_priority()
Matt Johnston <matt@ucc.asn.au>
parents:
1377
diff
changeset
|
27 void fuzz_get_socket_address(int fd, char **local_host, char **local_port, |
f03cfe9c76ac
Disable setnonblocking(), get_socket_address(), set_sock_priority()
Matt Johnston <matt@ucc.asn.au>
parents:
1377
diff
changeset
|
28 char **remote_host, char **remote_port, int host_lookup); |
1357 | 29 |
30 // fake IO wrappers | |
31 #ifndef FUZZ_SKIP_WRAP | |
32 #define select(nfds, readfds, writefds, exceptfds, timeout) \ | |
33 wrapfd_select(nfds, readfds, writefds, exceptfds, timeout) | |
34 #define write(fd, buf, count) wrapfd_write(fd, buf, count) | |
35 #define read(fd, buf, count) wrapfd_read(fd, buf, count) | |
1358
6b89eb92f872
glaring wrapfd problems fixed
Matt Johnston <matt@ucc.asn.au>
parents:
1357
diff
changeset
|
36 #define close(fd) wrapfd_close(fd) |
1357 | 37 #endif // FUZZ_SKIP_WRAP |
38 | |
1348 | 39 struct dropbear_fuzz_options { |
40 int fuzzing; | |
41 | |
42 // to record an unencrypted stream | |
43 FILE* recordf; | |
44 | |
45 // fuzzing input | |
1356
3677a510f545
add wrapfd. improve fuzzer in makefile
Matt Johnston <matt@ucc.asn.au>
parents:
1348
diff
changeset
|
46 buffer *input; |
1357 | 47 struct dropbear_cipher recv_cipher; |
48 struct dropbear_hash recv_mac; | |
49 int wrapfds; | |
1348 | 50 |
51 // dropbear_exit() jumps back | |
1385
6c92e97553f1
Add a flag whether to longjmp, missed that last commit
Matt Johnston <matt@ucc.asn.au>
parents:
1383
diff
changeset
|
52 int do_jmp; |
1348 | 53 sigjmp_buf jmp; |
54 | |
55 uid_t pw_uid; | |
56 gid_t pw_gid; | |
57 char* pw_name; | |
58 char* pw_dir; | |
59 char* pw_shell; | |
60 char* pw_passwd; | |
61 }; | |
62 | |
63 extern struct dropbear_fuzz_options fuzz; | |
64 | |
1357 | 65 #endif // DROPBEAR_FUZZ |
1348 | 66 |
67 #endif /* DROPBEAR_FUZZ_H */ |