]>
Commit | Line | Data |
---|---|---|
db9ecf05 | 1 | /* SPDX-License-Identifier: LGPL-2.1-or-later */ |
9541f5ff EV |
2 | |
3 | #include <linux/sockios.h> | |
36dd5ffd | 4 | #include <sys/ioctl.h> |
ca78ad1d | 5 | #include <unistd.h> |
9541f5ff EV |
6 | |
7 | #include "fd-util.h" | |
8 | #include "fuzz.h" | |
9 | #include "fuzz-journald.h" | |
10 | #include "journald-stream.h" | |
11 | ||
12 | static int stream_fds[2] = { -1, -1 }; | |
13 | ||
14 | int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { | |
15 | Server s; | |
16 | StdoutStream *stream; | |
17 | int v; | |
18 | ||
eafadd06 | 19 | if (size == 0 || size > 65536) |
9541f5ff EV |
20 | return 0; |
21 | ||
22 | if (!getenv("SYSTEMD_LOG_LEVEL")) | |
23 | log_set_max_level(LOG_CRIT); | |
24 | ||
25 | assert_se(socketpair(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0, stream_fds) >= 0); | |
26 | dummy_server_init(&s, NULL, 0); | |
27 | assert_se(stdout_stream_install(&s, stream_fds[0], &stream) >= 0); | |
28 | assert_se(write(stream_fds[1], data, size) == (ssize_t) size); | |
29 | while (ioctl(stream_fds[0], SIOCINQ, &v) == 0 && v) | |
f5fbe71d | 30 | sd_event_run(s.event, UINT64_MAX); |
9541f5ff EV |
31 | if (s.n_stdout_streams) |
32 | stdout_stream_destroy(stream); | |
33 | server_done(&s); | |
34 | stream_fds[1] = safe_close(stream_fds[1]); | |
35 | ||
36 | return 0; | |
37 | } |