public inbox for passt-dev@passt.top
 help / color / mirror / code / Atom feed
3f834a001ca77eff20b2cf1e627f3b109460ce94 blob 1856 bytes (raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
 
//SPDX-License-Identifier: GPL-2.0-or-later

/* fuzz.h - AFL++ fuzzing support for passt
 *
 * Copyright Red Hat
 * Author: Anshu Kumari <anskuma@redhat.com>
 */

#ifndef FUZZ_H
#define FUZZ_H

#ifdef FUZZING

#include <stdint.h>
#include <stddef.h>
#include <time.h>
#include <sys/types.h>
#include <sys/socket.h>

int fuzz_clock_gettime(clockid_t clk, struct timespec *tp);
void fuzz_clock_reset(void);
ssize_t fuzz_getrandom(void *buf, size_t buflen, unsigned int flags);
int fuzz_getsockopt(int fd, int level, int optname, void *optval,
		    socklen_t *optlen);

#define clock_gettime(clk, tp) 		fuzz_clock_gettime(clk, tp)
#define getrandom(buf, len, flags) 	fuzz_getrandom(buf, len, flags)
#define getsockopt(fd, level, name, val, len) \
	fuzz_getsockopt(fd, level, name, val, len)

/* AFL++ buf layout: [0..11] epoll_event, [12..65547] recv payload */
#define FUZZ_RECV_OFF		12
#define FUZZ_RECV_MAX		(64 * 1024)

extern const unsigned char *fuzz_recv_data;
extern int fuzz_recv_data_len;

ssize_t fuzz_recv(int fd, void *buf, size_t len, int flags);
ssize_t fuzz_recvmsg(int fd, struct msghdr *msg, int flags);
ssize_t fuzz_recvfrom(int fd, void *buf, size_t len, int flags,
		      struct sockaddr *src, socklen_t *addrlen);
int fuzz_recvmmsg(int fd, struct mmsghdr *mmh, unsigned int vlen,
		  int flags, struct timespec *timeout);

/* Override existing wrappers for recvfrom() present inside util.h*/
#undef recvfrom

#define recv(fd, buf, len, flags)		fuzz_recv(fd, buf, len, flags)
#define recvmsg(fd, msg, flags)			fuzz_recvmsg(fd, msg, flags)
#define recvfrom(fd, buf, len, flags, src, sl)		\
	fuzz_recvfrom(fd, buf, len, flags, src, sl)
#define recvmmsg(fd, mmh, vlen, flags, timeout)		\
	fuzz_recvmmsg(fd, mmh, vlen, flags, timeout)

#define FUZZ_TURN_PATH	"/dev/shm/passt_fuzz_turn"

struct fuzz_turn {
	uint32_t turn;
};

#endif
#endif
debug log:

solving 3f834a0 ...
found 3f834a0 in https://archives.passt.top/passt-dev/20260812072630.3235261-2-anskuma@redhat.com/

applying [1/1] https://archives.passt.top/passt-dev/20260812072630.3235261-2-anskuma@redhat.com/
diff --git a/fuzz.h b/fuzz.h
new file mode 100644
index 0000000..3f834a0

Checking patch fuzz.h...
Applied patch fuzz.h cleanly.

index at:
100644 3f834a001ca77eff20b2cf1e627f3b109460ce94	fuzz.h

Code repositories for project(s) associated with this public inbox

	https://passt.top/passt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for IMAP folder(s).