From 7eec246d56da3ff5e3debd681e04119cccaee831 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= Date: Mon, 24 Jun 2024 22:26:53 +0200 Subject: [PATCH] fuzzer_load: seal the input fd after writing the data Nothing should ever modify this data. Also, add CLOEXEC for good measure. --- fuzzers/fuzzer_load.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fuzzers/fuzzer_load.c b/fuzzers/fuzzer_load.c index d277fe35cb..4b3c1f2ff3 100644 --- a/fuzzers/fuzzer_load.c +++ b/fuzzers/fuzzer_load.c @@ -19,6 +19,7 @@ #include #include +#include #include #include @@ -41,7 +42,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) #endif // fmemopen doesn't have associated file descriptor, so we do copy. - int fd = memfd_create("fuzz_mpv_load", 0); + int fd = memfd_create("fuzz_mpv_load", MFD_CLOEXEC | MFD_ALLOW_SEALING); if (fd == -1) exit(1); ssize_t written = 0; @@ -51,6 +52,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) exit(1); written += result; } + if (fcntl(fd, F_ADD_SEALS, F_SEAL_WRITE | F_SEAL_SHRINK | F_SEAL_GROW | F_SEAL_SEAL) != 0) + exit(1); if (lseek(fd, 0, SEEK_SET) != 0) exit(1); char filename[5 + 10 + 1];