HEX
Server: LiteSpeed
System: Linux server.searchcove.com 4.18.0-513.24.1.lve.2.el8.x86_64 #1 SMP Fri May 24 12:42:50 UTC 2024 x86_64
User: lurax (1083)
PHP: 8.3.30
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/include/dovecot/fuzzer.h
#ifndef FUZZER_H
#define FUZZER_H

struct iostream_pump;
struct ioloop;

struct fuzzer_context {
	int fd, fd_pump;
	struct iostream_pump *pump;
	struct ioloop *ioloop;
};

#define FUZZ_BEGIN_DATA(data_arg, size_arg) \
	int LLVMFuzzerTestOneInput(data_arg, size_arg); \
	int LLVMFuzzerTestOneInput(data_arg, size_arg) { \
		struct fuzzer_context fuzz_ctx; \
		fuzzer_init(&fuzz_ctx); T_BEGIN {

const char *fuzzer_t_strndup_replace_zero(
	const uint8_t *_param_data, size_t _param_size, char subst);

#define FUZZ_BEGIN_STR(str_arg) \
	FUZZ_BEGIN_DATA(const uint8_t *_param_data, size_t _param_size) \
	str_arg = fuzzer_t_strndup_replace_zero(_param_data, _param_size, '\\');

#define FUZZ_BEGIN_FD \
	FUZZ_BEGIN_DATA(const uint8_t *_param_data, size_t _param_size) \
	fuzz_ctx.ioloop = io_loop_create(); \
	(void)fuzzer_io_as_fd(&fuzz_ctx, _param_data, _param_size);

#define FUZZ_END \
	} T_END; fuzzer_deinit(&fuzz_ctx); return 0; }

void fuzzer_init(struct fuzzer_context *fuzz_ctx);
void fuzzer_deinit(struct fuzzer_context *fuzz_ctx);

int fuzzer_io_as_fd(struct fuzzer_context *fuzz_ctx,
		    const uint8_t *data, size_t size);

#endif