From: Lennart Poettering Date: Mon, 16 Dec 2024 11:18:17 +0000 (+0100) Subject: fuzz-journal-remote: use memfd_new_and_seal() where appropriate X-Git-Tag: v258-rc1~1831^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4dac692094029b81156bf3e0bf80ddb7cde4e98c;p=thirdparty%2Fsystemd.git fuzz-journal-remote: use memfd_new_and_seal() where appropriate This means we can drop memfd_new_and_map() and results in generally shorter code. --- diff --git a/src/basic/memfd-util.c b/src/basic/memfd-util.c index 2d710267d0a..9d3983b1816 100644 --- a/src/basic/memfd-util.c +++ b/src/basic/memfd-util.c @@ -95,30 +95,6 @@ int memfd_get_seals(int fd, unsigned *ret_seals) { return 0; } -int memfd_map(int fd, uint64_t offset, size_t size, void **ret) { - unsigned int seals; - void *q; - int r; - - assert(fd >= 0); - assert(size > 0); - assert(ret); - - r = memfd_get_seals(fd, &seals); - if (r < 0) - return r; - - if (seals & F_SEAL_WRITE) - q = mmap(NULL, size, PROT_READ, MAP_PRIVATE, fd, offset); - else - q = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, offset); - if (q == MAP_FAILED) - return -errno; - - *ret = q; - return 0; -} - int memfd_set_sealed(int fd) { return memfd_add_seals(fd, F_SEAL_SEAL | F_SEAL_SHRINK | F_SEAL_GROW | F_SEAL_WRITE); } @@ -154,28 +130,6 @@ int memfd_set_size(int fd, uint64_t sz) { return RET_NERRNO(ftruncate(fd, sz)); } -int memfd_new_and_map(const char *name, size_t sz, void **ret) { - _cleanup_close_ int fd = -EBADF; - int r; - - assert(sz > 0); - assert(ret); - - fd = memfd_new(name); - if (fd < 0) - return fd; - - r = memfd_set_size(fd, sz); - if (r < 0) - return r; - - r = memfd_map(fd, 0, sz, ret); - if (r < 0) - return r; - - return TAKE_FD(fd); -} - int memfd_new_and_seal(const char *name, const void *data, size_t sz) { _cleanup_close_ int fd = -EBADF; int r; diff --git a/src/basic/memfd-util.h b/src/basic/memfd-util.h index 92d8b579149..077ca6f67b4 100644 --- a/src/basic/memfd-util.h +++ b/src/basic/memfd-util.h @@ -13,8 +13,6 @@ static inline int memfd_new(const char *name) { return memfd_new_full(name, 0); } -int memfd_new_and_map(const char *name, size_t sz, void **ret); - int memfd_new_and_seal(const char *name, const void *data, size_t sz); static inline int memfd_new_and_seal_string(const char *name, const char *s) { return memfd_new_and_seal(name, s, SIZE_MAX); @@ -22,7 +20,6 @@ static inline int memfd_new_and_seal_string(const char *name, const char *s) { int memfd_add_seals(int fd, unsigned seals); int memfd_get_seals(int fd, unsigned *ret_seals); -int memfd_map(int fd, uint64_t offset, size_t size, void **ret); int memfd_set_sealed(int fd); int memfd_get_sealed(int fd); diff --git a/src/journal-remote/fuzz-journal-remote.c b/src/journal-remote/fuzz-journal-remote.c index 774389dee35..3e874f19b71 100644 --- a/src/journal-remote/fuzz-journal-remote.c +++ b/src/journal-remote/fuzz-journal-remote.c @@ -24,7 +24,6 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { _cleanup_(unlink_and_freep) char *name = NULL; _cleanup_(sd_journal_closep) sd_journal *j = NULL; _cleanup_(journal_remote_server_destroy) RemoteServer s = {}; - void *mem; int fdin, r; if (outside_size_range(size, 3, 65536)) @@ -35,13 +34,10 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { assert_se(mkdtemp_malloc("/tmp/fuzz-journal-remote-XXXXXX", &tmp) >= 0); assert_se(name = path_join(tmp, "fuzz-journal-remote.XXXXXX.journal")); - fdin = fdin_close = memfd_new_and_map("fuzz-journal-remote", size, &mem); + fdin = fdin_close = memfd_new_and_seal("fuzz-journal-remote", data, size); if (fdin < 0) return log_error_errno(fdin, "memfd_new_and_map() failed: %m"); - memcpy(mem, data, size); - assert_se(munmap(mem, size) == 0); - fdout = mkostemps(name, STRLEN(".journal"), O_CLOEXEC); if (fdout < 0) return log_error_errno(errno, "mkostemps() failed: %m");