]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-test: fuzzer - Fully deinitialize lib for each cycle
authorStephan Bosch <stephan.bosch@open-xchange.com>
Thu, 27 Nov 2025 16:49:16 +0000 (17:49 +0100)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Mon, 2 Feb 2026 18:54:43 +0000 (18:54 +0000)
This will allow running address sanitizer as part of the fuzz.

src/lib-test/fuzzer.c
src/lib-test/fuzzer.h

index 38300479d7cdfe6df24710cf615a9e69d2eeb7ee..09f0e57bb0b1020a120eaeeb4498bd815fff48d0 100644 (file)
@@ -18,6 +18,7 @@ void fuzzer_init(struct fuzzer_context *fuzz_ctx)
                lib_init();
                lib_signals_init();
                lib_signals_ignore(SIGPIPE, TRUE);
+               fuzz_ctx->lib_initialized = TRUE;
        }
        fuzz_ctx->fd = -1;
        fuzz_ctx->fd_pump = -1;
@@ -34,6 +35,10 @@ void fuzzer_deinit(struct fuzzer_context *fuzz_ctx)
                (void)close(fuzz_ctx->fd_pump);
        if (fuzz_ctx->ioloop != NULL)
                io_loop_destroy(&fuzz_ctx->ioloop);
+       if (fuzz_ctx->lib_initialized) {
+               lib_signals_deinit();
+               lib_deinit();
+       }
 }
 
 static void pump_finished(enum iostream_pump_status status ATTR_UNUSED,
index 8150b583e0872d5ab2a81b263e75470d588ab0c1..08962e422960b998c20f671c084e723b7a2d19f8 100644 (file)
@@ -8,6 +8,8 @@ struct fuzzer_context {
        int fd, fd_pump;
        struct iostream_pump *pump;
        struct ioloop *ioloop;
+
+       bool lib_initialized:1;
 };
 
 #define FUZZ_BEGIN_DATA(data_arg, size_arg) \