diff options
author | Evgeny Vereshchagin <evvers@ya.ru> | 2018-09-07 06:13:17 +0000 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2018-09-08 12:05:14 +0200 |
commit | 231dca5579cfba6175d19eee5347d693893fb5aa (patch) | |
tree | 63e29c755bd7c9e573868c309543cad934100676 | |
parent | c155a05549ea0c2d7fe5e10acecef0c5d0f998f1 (diff) | |
download | systemd-231dca5579cfba6175d19eee5347d693893fb5aa.tar.gz |
tests: put fuzz_journald_processing_function in a .c file
-rw-r--r-- | src/fuzz/fuzz-journald.c | 30 | ||||
-rw-r--r-- | src/fuzz/fuzz-journald.h | 24 | ||||
-rw-r--r-- | src/fuzz/meson.build | 6 |
3 files changed, 36 insertions, 24 deletions
diff --git a/src/fuzz/fuzz-journald.c b/src/fuzz/fuzz-journald.c new file mode 100644 index 0000000000..f271d7f2fe --- /dev/null +++ b/src/fuzz/fuzz-journald.c @@ -0,0 +1,30 @@ +/* SPDX-License-Identifier: LGPL-2.1+ */ + +#include "alloc-util.h" +#include "fuzz-journald.h" +#include "journald-server.h" +#include "sd-event.h" + +void fuzz_journald_processing_function( + const uint8_t *data, + size_t size, + void (*f)(Server *s, const char *buf, size_t raw_len, const struct ucred *ucred, const struct timeval *tv, const char *label, size_t label_len) + ) { + Server s = {}; + char *label = NULL; + size_t label_len = 0; + struct ucred *ucred = NULL; + struct timeval *tv = NULL; + + if (size == 0) + return; + + assert_se(sd_event_default(&s.event) >= 0); + s.syslog_fd = s.native_fd = s.stdout_fd = s.dev_kmsg_fd = s.audit_fd = s.hostname_fd = s.notify_fd = -1; + s.buffer = memdup_suffix0(data, size); + assert_se(s.buffer); + s.buffer_size = size + 1; + s.storage = STORAGE_NONE; + (*f)(&s, s.buffer, size, ucred, tv, label, label_len); + server_done(&s); +} diff --git a/src/fuzz/fuzz-journald.h b/src/fuzz/fuzz-journald.h index e66ef54c9b..e9d32a74aa 100644 --- a/src/fuzz/fuzz-journald.h +++ b/src/fuzz/fuzz-journald.h @@ -1,30 +1,10 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ #pragma once -#include "alloc-util.h" #include "journald-server.h" -#include "sd-event.h" -static void fuzz_journald_processing_function( +void fuzz_journald_processing_function( const uint8_t *data, size_t size, void (*f)(Server *s, const char *buf, size_t raw_len, const struct ucred *ucred, const struct timeval *tv, const char *label, size_t label_len) - ) { - Server s = {}; - char *label = NULL; - size_t label_len = 0; - struct ucred *ucred = NULL; - struct timeval *tv = NULL; - - if (size == 0) - return; - - assert_se(sd_event_default(&s.event) >= 0); - s.syslog_fd = s.native_fd = s.stdout_fd = s.dev_kmsg_fd = s.audit_fd = s.hostname_fd = s.notify_fd = -1; - s.buffer = memdup_suffix0(data, size); - assert_se(s.buffer); - s.buffer_size = size + 1; - s.storage = STORAGE_NONE; - (*f)(&s, s.buffer, size, ucred, tv, label, label_len); - server_done(&s); -} +); diff --git a/src/fuzz/meson.build b/src/fuzz/meson.build index 5a97ef5091..40c623345d 100644 --- a/src/fuzz/meson.build +++ b/src/fuzz/meson.build @@ -19,12 +19,14 @@ fuzzers += [ libshared], [libmount]], - [['src/fuzz/fuzz-journald-native.c'], + [['src/fuzz/fuzz-journald-native.c', + 'src/fuzz/fuzz-journald.c'], [libjournal_core, libshared], [libselinux]], - [['src/fuzz/fuzz-journald-syslog.c'], + [['src/fuzz/fuzz-journald-syslog.c', + 'src/fuzz/fuzz-journald.c'], [libjournal_core, libshared], [libselinux]], |