/src/pupnp/fuzzer/FuzzHttp.c
Line | Count | Source |
1 | | #include "httpparser.h" |
2 | | #include <stddef.h> |
3 | | #include <stdint.h> |
4 | | |
5 | | extern int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) |
6 | 2.77k | { |
7 | 2.77k | http_parser_t parser; |
8 | 2.77k | int as_response; |
9 | | |
10 | 2.77k | if (Size < 1) { |
11 | 0 | return 0; |
12 | 0 | } |
13 | | |
14 | | /* One leading byte selects request vs response parsing. */ |
15 | 2.77k | as_response = Data[0] & 1; |
16 | 2.77k | Data += 1; |
17 | 2.77k | Size -= 1; |
18 | | |
19 | 2.77k | if (as_response) { |
20 | 1.62k | parser_response_init(&parser, HTTPMETHOD_GET); |
21 | 1.62k | } else { |
22 | 1.15k | parser_request_init(&parser); |
23 | 1.15k | } |
24 | | |
25 | 2.77k | parser_append(&parser, (const char *)Data, Size); |
26 | | |
27 | 2.77k | httpmsg_destroy(&parser.msg); |
28 | 2.77k | return 0; |
29 | 2.77k | } |