aboutsummaryrefslogtreecommitdiffstats
path: root/executor/common_linux.h
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2024-01-05 17:58:50 +0100
committerAleksandr Nogikh <nogikh@google.com>2024-01-05 17:28:48 +0000
commit397c964fceb327fe12c6f42334b879e1887412fc (patch)
tree93920e35277d433e0cc9eb11eaf4a48fe4a8ad78 /executor/common_linux.h
parented58bbb9537b28097e0d75fd34a70b40beebd481 (diff)
executor: prevent netlink_send_ext with dofail=true
This should never be happening during fuzzing. Otherwise we let syz-executor silently crash and restart insane number of times.
Diffstat (limited to 'executor/common_linux.h')
-rw-r--r--executor/common_linux.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/executor/common_linux.h b/executor/common_linux.h
index 950c43096..9558bdb7d 100644
--- a/executor/common_linux.h
+++ b/executor/common_linux.h
@@ -258,6 +258,13 @@ static void find_vf_interface(void)
static int netlink_send_ext(struct nlmsg* nlmsg, int sock,
uint16 reply_type, int* reply_len, bool dofail)
{
+#if SYZ_EXECUTOR
+ if (in_execute_one && dofail) {
+ // We can expect different sorts of breakages during fuzzing,
+ // we should not kill the whole process because of them.
+ failmsg("invalid netlink_send_ext arguments", "dofail is true during syscall execution");
+ }
+#endif
if (nlmsg->pos > nlmsg->buf + sizeof(nlmsg->buf) || nlmsg->nesting)
fail("nlmsg overflow/bad nesting");
struct nlmsghdr* hdr = (struct nlmsghdr*)nlmsg->buf;