Skip to content

Commit 3457a7a

Browse files
authored
Merge pull request #10009 from evverx/rework-journald-fuzzers
Add a fuzzer for server_process_native_message
2 parents 53253d9 + 9cdea02 commit 3457a7a

6 files changed

Lines changed: 49 additions & 23 deletions

File tree

src/fuzz/fuzz-journald-native.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/* SPDX-License-Identifier: LGPL-2.1+ */
2+
3+
#include "fuzz.h"
4+
#include "fuzz-journald.h"
5+
#include "journald-native.h"
6+
7+
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
8+
fuzz_journald_processing_function(data, size, server_process_native_message);
9+
return 0;
10+
}

src/fuzz/fuzz-journald-syslog.c

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,10 @@
11
/* SPDX-License-Identifier: LGPL-2.1+ */
22

3-
#include "alloc-util.h"
43
#include "fuzz.h"
5-
#include "journald-server.h"
4+
#include "fuzz-journald.h"
65
#include "journald-syslog.h"
7-
#include "sd-event.h"
86

97
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
10-
Server s = {};
11-
char *label = NULL;
12-
size_t label_len = 0;
13-
struct ucred *ucred = NULL;
14-
struct timeval *tv = NULL;
15-
16-
if (size == 0)
17-
return 0;
18-
19-
assert_se(sd_event_default(&s.event) >= 0);
20-
s.syslog_fd = s.native_fd = s.stdout_fd = s.dev_kmsg_fd = s.audit_fd = s.hostname_fd = s.notify_fd = -1;
21-
s.buffer = memdup_suffix0(data, size);
22-
assert_se(s.buffer);
23-
s.buffer_size = size + 1;
24-
s.storage = STORAGE_NONE;
25-
server_process_syslog_message(&s, s.buffer, size, ucred, tv, label, label_len);
26-
server_done(&s);
27-
8+
fuzz_journald_processing_function(data, size, server_process_syslog_message);
289
return 0;
2910
}

src/fuzz/fuzz-journald.h

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/* SPDX-License-Identifier: LGPL-2.1+ */
2+
#pragma once
3+
4+
#include "alloc-util.h"
5+
#include "journald-server.h"
6+
#include "sd-event.h"
7+
8+
static void fuzz_journald_processing_function(
9+
const uint8_t *data,
10+
size_t size,
11+
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)
12+
) {
13+
Server s = {};
14+
char *label = NULL;
15+
size_t label_len = 0;
16+
struct ucred *ucred = NULL;
17+
struct timeval *tv = NULL;
18+
19+
if (size == 0)
20+
return;
21+
22+
assert_se(sd_event_default(&s.event) >= 0);
23+
s.syslog_fd = s.native_fd = s.stdout_fd = s.dev_kmsg_fd = s.audit_fd = s.hostname_fd = s.notify_fd = -1;
24+
s.buffer = memdup_suffix0(data, size);
25+
assert_se(s.buffer);
26+
s.buffer_size = size + 1;
27+
s.storage = STORAGE_NONE;
28+
(*f)(&s, s.buffer, size, ucred, tv, label, label_len);
29+
server_done(&s);
30+
}

src/fuzz/meson.build

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ fuzzers += [
1919
libshared],
2020
[libmount]],
2121

22+
[['src/fuzz/fuzz-journald-native.c'],
23+
[libjournal_core,
24+
libshared],
25+
[libselinux]],
26+
2227
[['src/fuzz/fuzz-journald-syslog.c'],
2328
[libjournal_core,
2429
libshared],

src/journal/journald-native.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ static int server_process_entry(
277277

278278
void server_process_native_message(
279279
Server *s,
280-
const void *buffer, size_t buffer_size,
280+
const char *buffer, size_t buffer_size,
281281
const struct ucred *ucred,
282282
const struct timeval *tv,
283283
const char *label, size_t label_len) {

src/journal/journald-native.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
void server_process_native_message(
77
Server *s,
8-
const void *buffer,
8+
const char *buffer,
99
size_t buffer_size,
1010
const struct ucred *ucred,
1111
const struct timeval *tv,

0 commit comments

Comments
 (0)