annotate fuzzer-pubkey.c @ 1584:cdfab509c392

use random keyblob from the fuzzer instead
author Matt Johnston <matt@ucc.asn.au>
date Sun, 04 Mar 2018 19:19:45 +0800
parents 92c93b4a3646
children e6a5e51a29c9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1369
ddfcadca3c4c fuzzer-pubkey
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
1 #include "fuzz.h"
ddfcadca3c4c fuzzer-pubkey
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
2 #include "session.h"
ddfcadca3c4c fuzzer-pubkey
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
3 #include "fuzz-wrapfd.h"
ddfcadca3c4c fuzzer-pubkey
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
4 #include "debug.h"
ddfcadca3c4c fuzzer-pubkey
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
5
ddfcadca3c4c fuzzer-pubkey
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
6 static void setup_fuzzer(void) {
1456
a90fdd2d2ed8 add fuzzer-preauth_nomaths
Matt Johnston <matt@ucc.asn.au>
parents: 1383
diff changeset
7 fuzz_common_setup();
1369
ddfcadca3c4c fuzzer-pubkey
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
8 }
ddfcadca3c4c fuzzer-pubkey
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
9
ddfcadca3c4c fuzzer-pubkey
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
10 int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
ddfcadca3c4c fuzzer-pubkey
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
11 static int once = 0;
ddfcadca3c4c fuzzer-pubkey
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
12 if (!once) {
ddfcadca3c4c fuzzer-pubkey
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
13 setup_fuzzer();
ddfcadca3c4c fuzzer-pubkey
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
14 once = 1;
ddfcadca3c4c fuzzer-pubkey
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
15 }
ddfcadca3c4c fuzzer-pubkey
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
16
1456
a90fdd2d2ed8 add fuzzer-preauth_nomaths
Matt Johnston <matt@ucc.asn.au>
parents: 1383
diff changeset
17 if (fuzz_set_input(Data, Size) == DROPBEAR_FAILURE) {
1377
d4cc85e6c569 rearrange, all fuzzers now call fuzzer_set_input()
Matt Johnston <matt@ucc.asn.au>
parents: 1369
diff changeset
18 return 0;
d4cc85e6c569 rearrange, all fuzzers now call fuzzer_set_input()
Matt Johnston <matt@ucc.asn.au>
parents: 1369
diff changeset
19 }
d4cc85e6c569 rearrange, all fuzzers now call fuzzer_set_input()
Matt Johnston <matt@ucc.asn.au>
parents: 1369
diff changeset
20
1369
ddfcadca3c4c fuzzer-pubkey
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
21 m_malloc_set_epoch(1);
ddfcadca3c4c fuzzer-pubkey
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
22
1584
cdfab509c392 use random keyblob from the fuzzer instead
Matt Johnston <matt@ucc.asn.au>
parents: 1559
diff changeset
23 if (setjmp(fuzz.jmp) == 0) {
cdfab509c392 use random keyblob from the fuzzer instead
Matt Johnston <matt@ucc.asn.au>
parents: 1559
diff changeset
24 buffer *line = buf_getstringbuf(fuzz.input);
cdfab509c392 use random keyblob from the fuzzer instead
Matt Johnston <matt@ucc.asn.au>
parents: 1559
diff changeset
25 buffer *keyblob = buf_getstringbuf(fuzz.input);
cdfab509c392 use random keyblob from the fuzzer instead
Matt Johnston <matt@ucc.asn.au>
parents: 1559
diff changeset
26
cdfab509c392 use random keyblob from the fuzzer instead
Matt Johnston <matt@ucc.asn.au>
parents: 1559
diff changeset
27 unsigned int algolen;
cdfab509c392 use random keyblob from the fuzzer instead
Matt Johnston <matt@ucc.asn.au>
parents: 1559
diff changeset
28 const char* algoname = buf_getstring(keyblob, &algolen);
1369
ddfcadca3c4c fuzzer-pubkey
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
29
1584
cdfab509c392 use random keyblob from the fuzzer instead
Matt Johnston <matt@ucc.asn.au>
parents: 1559
diff changeset
30 if (have_algo(algo, algolen, sshhostkey) == DROPBEAR_FAILURE) {
cdfab509c392 use random keyblob from the fuzzer instead
Matt Johnston <matt@ucc.asn.au>
parents: 1559
diff changeset
31 dropbear_exit("fuzzer imagined a bogus algorithm");
cdfab509c392 use random keyblob from the fuzzer instead
Matt Johnston <matt@ucc.asn.au>
parents: 1559
diff changeset
32 }
cdfab509c392 use random keyblob from the fuzzer instead
Matt Johnston <matt@ucc.asn.au>
parents: 1559
diff changeset
33 fuzz_checkpubkey_line(line, 5, "/home/me/authorized_keys",
cdfab509c392 use random keyblob from the fuzzer instead
Matt Johnston <matt@ucc.asn.au>
parents: 1559
diff changeset
34 algoname, algolen,
cdfab509c392 use random keyblob from the fuzzer instead
Matt Johnston <matt@ucc.asn.au>
parents: 1559
diff changeset
35 keyblob->data, keyblob->len);
cdfab509c392 use random keyblob from the fuzzer instead
Matt Johnston <matt@ucc.asn.au>
parents: 1559
diff changeset
36
cdfab509c392 use random keyblob from the fuzzer instead
Matt Johnston <matt@ucc.asn.au>
parents: 1559
diff changeset
37 buf_free(line);
cdfab509c392 use random keyblob from the fuzzer instead
Matt Johnston <matt@ucc.asn.au>
parents: 1559
diff changeset
38 buf_free(keyblob);
1383
f03cfe9c76ac Disable setnonblocking(), get_socket_address(), set_sock_priority()
Matt Johnston <matt@ucc.asn.au>
parents: 1378
diff changeset
39 m_malloc_free_epoch(1, 0);
1369
ddfcadca3c4c fuzzer-pubkey
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
40 } else {
1378
7209a6e30932 linked list dbmalloc now
Matt Johnston <matt@ucc.asn.au>
parents: 1377
diff changeset
41 m_malloc_free_epoch(1, 1);
1369
ddfcadca3c4c fuzzer-pubkey
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
42 TRACE(("dropbear_exit longjmped"))
1559
92c93b4a3646 Fix to be able to compile normal(ish) binaries with --enable-fuzz
Matt Johnston <matt@ucc.asn.au>
parents: 1456
diff changeset
43 /* dropbear_exit jumped here */
1369
ddfcadca3c4c fuzzer-pubkey
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
44 }
ddfcadca3c4c fuzzer-pubkey
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
45
ddfcadca3c4c fuzzer-pubkey
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
46 return 0;
ddfcadca3c4c fuzzer-pubkey
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
47 }