misc: fuzz: extend msg parsing fuzzer
[kamailio] / misc / fuzz / fuzz_parse_msg.c
1 #include "../parser/sdp/sdp.h"
2 #include "../parser/parse_uri.c"
3 #include "../parser/parse_hname2.h"
4 #include "../parser/contact/parse_contact.h"
5 #include "../parser/parse_refer_to.h"
6 #include "../parser/parse_ppi_pai.h"
7 #include "../parser/parse_privacy.h"
8 #include "../parser/parse_diversion.h"
9 #include "../parser/parse_identityinfo.h"
10 #include "../parser/parse_disposition.h"
11
12 int LLVMFuzzerInitialize(int *argc, char ***argv) {
13     ksr_hname_init_index();
14     return 0;
15 }
16
17 int
18 LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
19     sip_msg_t orig_inv = { };
20     orig_inv.buf = (char*)data;
21     orig_inv.len = size;
22     if (parse_msg(orig_inv.buf, orig_inv.len, &orig_inv) < 0) {
23         goto cleanup;
24     }
25   
26     parse_sdp(&orig_inv);
27
28     parse_headers(&orig_inv, HDR_TO_F, 0);
29
30     parse_contact_header(&orig_inv);
31
32     parse_refer_to_header(&orig_inv);
33
34     parse_to_header(&orig_inv);
35
36     parse_pai_header(&orig_inv);
37     
38     parse_diversion_header(&orig_inv);
39
40     parse_privacy(&orig_inv);
41
42     parse_content_disposition(&orig_inv);
43
44     parse_identityinfo_header(&orig_inv);
45
46     str uri;
47     get_src_uri(&orig_inv, 0, &uri);
48
49     str ssock;
50     get_src_address_socket(&orig_inv, &ssock);
51
52 cleanup:
53     free_sip_msg(&orig_inv);
54
55     return 0;
56 }