Skip to content

Commit 29fb56c

Browse files
yuwatabluca
authored andcommitted
fuzz-journal-remote: fix potential fd-leak
(cherry picked from commit 9b72eac) (cherry picked from commit 8f19911)
1 parent 53c751f commit 29fb56c

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

src/journal-remote/fuzz-journal-remote.c

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,13 @@
1919
#include "tmpfile-util.h"
2020

2121
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
22-
int fdin;
23-
void *mem;
24-
_cleanup_close_ int fdout = -1;
22+
_cleanup_close_ int fdin_close = -1, fdout = -1;
2523
_cleanup_(rm_rf_physical_and_freep) char *tmp = NULL;
2624
_cleanup_(unlink_and_freep) char *name = NULL;
2725
_cleanup_(sd_journal_closep) sd_journal *j = NULL;
2826
_cleanup_(journal_remote_server_destroy) RemoteServer s = {};
29-
int r;
27+
void *mem;
28+
int fdin, r;
3029

3130
if (outside_size_range(size, 3, 65536))
3231
return 0;
@@ -37,7 +36,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
3736
assert_se(mkdtemp_malloc("/tmp/fuzz-journal-remote-XXXXXX", &tmp) >= 0);
3837
assert_se(name = path_join(tmp, "fuzz-journal-remote.XXXXXX.journal"));
3938

40-
fdin = memfd_new_and_map("fuzz-journal-remote", size, &mem);
39+
fdin = fdin_close = memfd_new_and_map("fuzz-journal-remote", size, &mem);
4140
if (fdin < 0)
4241
return log_error_errno(fdin, "memfd_new_and_map() failed: %m");
4342

@@ -57,10 +56,9 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
5756
}
5857

5958
r = journal_remote_add_source(&s, fdin, (char*) "fuzz-data", false);
60-
if (r < 0) {
61-
safe_close(fdin);
59+
if (r < 0)
6260
return r;
63-
}
61+
TAKE_FD(fdin_close);
6462
assert(r > 0);
6563

6664
while (s.active)

0 commit comments

Comments
 (0)