comparison fuzzer-pubkey.c @ 1563:1cbb7b3d6703

Merge fuzzing branch
author Matt Johnston <matt@ucc.asn.au>
date Wed, 28 Feb 2018 22:12:05 +0800
parents 92c93b4a3646
children cdfab509c392
comparison
equal deleted inserted replaced
1560:f5026f7486de 1563:1cbb7b3d6703
1 #include "fuzz.h"
2 #include "session.h"
3 #include "fuzz-wrapfd.h"
4 #include "debug.h"
5
6 static void setup_fuzzer(void) {
7 fuzz_common_setup();
8 }
9
10 int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
11 static int once = 0;
12 if (!once) {
13 setup_fuzzer();
14 once = 1;
15 }
16
17 if (fuzz_set_input(Data, Size) == DROPBEAR_FAILURE) {
18 return 0;
19 }
20
21 m_malloc_set_epoch(1);
22
23 /* choose a keytype based on input */
24 uint8_t b = 0;
25 size_t i;
26 for (i = 0; i < Size; i++) {
27 b ^= Data[i];
28 }
29 const char* algoname = fuzz_signkey_names[b%DROPBEAR_SIGNKEY_NUM_NAMED];
30 const char* keyblob = "blob"; /* keep short */
31
32 if (setjmp(fuzz.jmp) == 0) {
33 fuzz_checkpubkey_line(fuzz.input, 5, "/home/me/authorized_keys",
34 algoname, strlen(algoname),
35 (unsigned char*)keyblob, strlen(keyblob));
36 m_malloc_free_epoch(1, 0);
37 } else {
38 m_malloc_free_epoch(1, 1);
39 TRACE(("dropbear_exit longjmped"))
40 /* dropbear_exit jumped here */
41 }
42
43 return 0;
44 }