aboutsummaryrefslogtreecommitdiffstats
path: root/executor
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-03-21 12:18:36 +0100
committerDmitry Vyukov <dvyukov@google.com>2018-03-21 12:18:36 +0100
commit7c62f718046a2204a35cfe8850f9006b686b1c22 (patch)
tree26f9cdda898f4cd455c585d741f67fb941ef4258 /executor
parent704259f6449a65324f92d2737a291da10fdac03f (diff)
sys/linux: add netlink fou descriptions
Diffstat (limited to 'executor')
-rw-r--r--executor/common_linux.h54
-rw-r--r--executor/syscalls_linux.h40
2 files changed, 84 insertions, 10 deletions
diff --git a/executor/common_linux.h b/executor/common_linux.h
index 36eff74ef..825472d1b 100644
--- a/executor/common_linux.h
+++ b/executor/common_linux.h
@@ -119,6 +119,12 @@
#include <sys/types.h>
#include <unistd.h>
#endif
+#if defined(SYZ_EXECUTOR) || defined(__NR_syz_genetlink_get_family_id)
+#include <linux/genetlink.h>
+#include <linux/netlink.h>
+#include <sys/socket.h>
+#include <sys/types.h>
+#endif
#if defined(SYZ_EXECUTOR) || (defined(SYZ_REPEAT) && defined(SYZ_WAIT_REPEAT)) || \
defined(SYZ_USE_TMP_DIR) || defined(SYZ_HANDLE_SEGV) || defined(SYZ_TUN_ENABLE) || \
@@ -724,6 +730,54 @@ static uintptr_t syz_init_net_socket(uintptr_t domain, uintptr_t type, uintptr_t
#endif
#endif
+#if defined(SYZ_EXECUTOR) || defined(__NR_syz_genetlink_get_family_id)
+static uintptr_t syz_genetlink_get_family_id(uintptr_t name)
+{
+ char buf[512] = {0};
+ struct nlmsghdr* hdr = (struct nlmsghdr*)buf;
+ struct genlmsghdr* genlhdr = (struct genlmsghdr*)NLMSG_DATA(hdr);
+ struct nlattr* attr = (struct nlattr*)(genlhdr + 1);
+ hdr->nlmsg_len = sizeof(*hdr) + sizeof(*genlhdr) + sizeof(*attr) + GENL_NAMSIZ;
+ hdr->nlmsg_type = GENL_ID_CTRL;
+ hdr->nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK;
+ genlhdr->cmd = CTRL_CMD_GETFAMILY;
+ attr->nla_type = CTRL_ATTR_FAMILY_NAME;
+ attr->nla_len = sizeof(*attr) + GENL_NAMSIZ;
+ NONFAILING(strncpy((char*)(attr + 1), (char*)name, GENL_NAMSIZ));
+ struct iovec iov = {hdr, hdr->nlmsg_len};
+ struct sockaddr_nl addr = {0};
+ addr.nl_family = AF_NETLINK;
+ debug("syz_genetlink_get_family_id(%s)\n", (char*)(attr + 1));
+ int fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_GENERIC);
+ if (fd == -1) {
+ debug("syz_genetlink_get_family_id: socket failed: %d\n", errno);
+ return -1;
+ }
+ struct msghdr msg = {&addr, sizeof(addr), &iov, 1, NULL, 0, 0};
+ if (sendmsg(fd, &msg, 0) == -1) {
+ debug("syz_genetlink_get_family_id: sendmsg failed: %d\n", errno);
+ close(fd);
+ return -1;
+ }
+ ssize_t n = recv(fd, buf, sizeof(buf), 0);
+ close(fd);
+ if (n <= 0) {
+ debug("syz_genetlink_get_family_id: recv failed: %d\n", errno);
+ return -1;
+ }
+ if (hdr->nlmsg_type != GENL_ID_CTRL) {
+ debug("syz_genetlink_get_family_id: wrong reply type: %d\n", hdr->nlmsg_type);
+ return -1;
+ }
+ for (; (char*)attr < buf + n; attr = (struct nlattr*)((char*)attr + NLMSG_ALIGN(attr->nla_len))) {
+ if (attr->nla_type == CTRL_ATTR_FAMILY_ID)
+ return *(uint16*)(attr + 1);
+ }
+ debug("syz_genetlink_get_family_id: no CTRL_ATTR_FAMILY_ID attr\n");
+ return -1;
+}
+#endif
+
#if defined(SYZ_EXECUTOR) || defined(__NR_syz_kvm_setup_cpu)
#if defined(__x86_64__)
#include "common_kvm_amd64.h"
diff --git a/executor/syscalls_linux.h b/executor/syscalls_linux.h
index f5bb7f35f..6dbdc6365 100644
--- a/executor/syscalls_linux.h
+++ b/executor/syscalls_linux.h
@@ -2,11 +2,11 @@
#if defined(__i386__) || 0
#define GOARCH "386"
-#define SYZ_REVISION "cfe2895f5fbcad40837aa245a03df6040de715d5"
+#define SYZ_REVISION "07f18311863bda169fc776218d2d1d61ff0c5d80"
#define SYZ_PAGE_SIZE 4096
#define SYZ_NUM_PAGES 4096
#define SYZ_DATA_OFFSET 536870912
-unsigned syscall_count = 1609;
+unsigned syscall_count = 1613;
call_t syscalls[] = {
{"accept4", 364},
{"accept4$alg", 364},
@@ -1178,6 +1178,9 @@ call_t syscalls[] = {
{"sendmmsg$nfc_llcp", 345},
{"sendmmsg$unix", 345},
{"sendmsg", 370},
+ {"sendmsg$FOU_CMD_ADD", 370},
+ {"sendmsg$FOU_CMD_DEL", 370},
+ {"sendmsg$FOU_CMD_GET", 370},
{"sendmsg$alg", 370},
{"sendmsg$can_bcm", 370},
{"sendmsg$can_raw", 370},
@@ -1531,6 +1534,7 @@ call_t syscalls[] = {
{"syz_extract_tcp_res$synack", 0, (syscall_t)syz_extract_tcp_res},
{"syz_fuse_mount", 0, (syscall_t)syz_fuse_mount},
{"syz_fuseblk_mount", 0, (syscall_t)syz_fuseblk_mount},
+ {"syz_genetlink_get_family_id$fou", 0, (syscall_t)syz_genetlink_get_family_id},
{"syz_init_net_socket$bt_hci", 0, (syscall_t)syz_init_net_socket},
{"syz_init_net_socket$bt_l2cap", 0, (syscall_t)syz_init_net_socket},
{"syz_init_net_socket$bt_sco", 0, (syscall_t)syz_init_net_socket},
@@ -1623,11 +1627,11 @@ call_t syscalls[] = {
#if defined(__x86_64__) || 0
#define GOARCH "amd64"
-#define SYZ_REVISION "2622de14f49adc37c6c0e668588a4667e56d1b1e"
+#define SYZ_REVISION "40c12d23c5c1e6c11e1ab13ed032c1e4dc0e684f"
#define SYZ_PAGE_SIZE 4096
#define SYZ_NUM_PAGES 4096
#define SYZ_DATA_OFFSET 536870912
-unsigned syscall_count = 1661;
+unsigned syscall_count = 1665;
call_t syscalls[] = {
{"accept", 43},
{"accept$alg", 43},
@@ -2839,6 +2843,9 @@ call_t syscalls[] = {
{"sendmmsg$nfc_llcp", 307},
{"sendmmsg$unix", 307},
{"sendmsg", 46},
+ {"sendmsg$FOU_CMD_ADD", 46},
+ {"sendmsg$FOU_CMD_DEL", 46},
+ {"sendmsg$FOU_CMD_GET", 46},
{"sendmsg$alg", 46},
{"sendmsg$can_bcm", 46},
{"sendmsg$can_raw", 46},
@@ -3204,6 +3211,7 @@ call_t syscalls[] = {
{"syz_extract_tcp_res$synack", 0, (syscall_t)syz_extract_tcp_res},
{"syz_fuse_mount", 0, (syscall_t)syz_fuse_mount},
{"syz_fuseblk_mount", 0, (syscall_t)syz_fuseblk_mount},
+ {"syz_genetlink_get_family_id$fou", 0, (syscall_t)syz_genetlink_get_family_id},
{"syz_init_net_socket$bt_hci", 0, (syscall_t)syz_init_net_socket},
{"syz_init_net_socket$bt_l2cap", 0, (syscall_t)syz_init_net_socket},
{"syz_init_net_socket$bt_sco", 0, (syscall_t)syz_init_net_socket},
@@ -3296,11 +3304,11 @@ call_t syscalls[] = {
#if defined(__arm__) || 0
#define GOARCH "arm"
-#define SYZ_REVISION "8ac5f9f73b086aecc7c5eb98e2c2867def6d4b57"
+#define SYZ_REVISION "6698d4a368f4947b3b613f838e2e403841d38070"
#define SYZ_PAGE_SIZE 4096
#define SYZ_NUM_PAGES 4096
#define SYZ_DATA_OFFSET 536870912
-unsigned syscall_count = 1606;
+unsigned syscall_count = 1610;
call_t syscalls[] = {
{"accept", 285},
{"accept$alg", 285},
@@ -4465,6 +4473,9 @@ call_t syscalls[] = {
{"sendmmsg$nfc_llcp", 374},
{"sendmmsg$unix", 374},
{"sendmsg", 296},
+ {"sendmsg$FOU_CMD_ADD", 296},
+ {"sendmsg$FOU_CMD_DEL", 296},
+ {"sendmsg$FOU_CMD_GET", 296},
{"sendmsg$alg", 296},
{"sendmsg$can_bcm", 296},
{"sendmsg$can_raw", 296},
@@ -4824,6 +4835,7 @@ call_t syscalls[] = {
{"syz_extract_tcp_res$synack", 0, (syscall_t)syz_extract_tcp_res},
{"syz_fuse_mount", 0, (syscall_t)syz_fuse_mount},
{"syz_fuseblk_mount", 0, (syscall_t)syz_fuseblk_mount},
+ {"syz_genetlink_get_family_id$fou", 0, (syscall_t)syz_genetlink_get_family_id},
{"syz_init_net_socket$bt_hci", 0, (syscall_t)syz_init_net_socket},
{"syz_init_net_socket$bt_l2cap", 0, (syscall_t)syz_init_net_socket},
{"syz_init_net_socket$bt_sco", 0, (syscall_t)syz_init_net_socket},
@@ -4914,11 +4926,11 @@ call_t syscalls[] = {
#if defined(__aarch64__) || 0
#define GOARCH "arm64"
-#define SYZ_REVISION "4e6df14d0cbb5aa00fa2b8fa43a50654d7c2e425"
+#define SYZ_REVISION "82423022bc7f184a88fcd00fbd20962f6dbbd57e"
#define SYZ_PAGE_SIZE 4096
#define SYZ_NUM_PAGES 4096
#define SYZ_DATA_OFFSET 536870912
-unsigned syscall_count = 1590;
+unsigned syscall_count = 1594;
call_t syscalls[] = {
{"accept", 202},
{"accept$alg", 202},
@@ -6072,6 +6084,9 @@ call_t syscalls[] = {
{"sendmmsg$nfc_llcp", 269},
{"sendmmsg$unix", 269},
{"sendmsg", 211},
+ {"sendmsg$FOU_CMD_ADD", 211},
+ {"sendmsg$FOU_CMD_DEL", 211},
+ {"sendmsg$FOU_CMD_GET", 211},
{"sendmsg$alg", 211},
{"sendmsg$can_bcm", 211},
{"sendmsg$can_raw", 211},
@@ -6430,6 +6445,7 @@ call_t syscalls[] = {
{"syz_extract_tcp_res$synack", 0, (syscall_t)syz_extract_tcp_res},
{"syz_fuse_mount", 0, (syscall_t)syz_fuse_mount},
{"syz_fuseblk_mount", 0, (syscall_t)syz_fuseblk_mount},
+ {"syz_genetlink_get_family_id$fou", 0, (syscall_t)syz_genetlink_get_family_id},
{"syz_init_net_socket$bt_hci", 0, (syscall_t)syz_init_net_socket},
{"syz_init_net_socket$bt_l2cap", 0, (syscall_t)syz_init_net_socket},
{"syz_init_net_socket$bt_sco", 0, (syscall_t)syz_init_net_socket},
@@ -6516,11 +6532,11 @@ call_t syscalls[] = {
#if defined(__ppc64__) || defined(__PPC64__) || defined(__powerpc64__) || 0
#define GOARCH "ppc64le"
-#define SYZ_REVISION "04d12a6320bebfddb56bad9ef80cf8d7551a13be"
+#define SYZ_REVISION "18c287ebbc9da2ff832292feccf65374879463b6"
#define SYZ_PAGE_SIZE 4096
#define SYZ_NUM_PAGES 4096
#define SYZ_DATA_OFFSET 536870912
-unsigned syscall_count = 1580;
+unsigned syscall_count = 1584;
call_t syscalls[] = {
{"accept", 330},
{"accept$alg", 330},
@@ -7665,6 +7681,9 @@ call_t syscalls[] = {
{"sendmmsg$nfc_llcp", 349},
{"sendmmsg$unix", 349},
{"sendmsg", 341},
+ {"sendmsg$FOU_CMD_ADD", 341},
+ {"sendmsg$FOU_CMD_DEL", 341},
+ {"sendmsg$FOU_CMD_GET", 341},
{"sendmsg$alg", 341},
{"sendmsg$can_bcm", 341},
{"sendmsg$can_raw", 341},
@@ -8016,6 +8035,7 @@ call_t syscalls[] = {
{"syz_extract_tcp_res$synack", 0, (syscall_t)syz_extract_tcp_res},
{"syz_fuse_mount", 0, (syscall_t)syz_fuse_mount},
{"syz_fuseblk_mount", 0, (syscall_t)syz_fuseblk_mount},
+ {"syz_genetlink_get_family_id$fou", 0, (syscall_t)syz_genetlink_get_family_id},
{"syz_init_net_socket$bt_hci", 0, (syscall_t)syz_init_net_socket},
{"syz_init_net_socket$bt_l2cap", 0, (syscall_t)syz_init_net_socket},
{"syz_init_net_socket$bt_sco", 0, (syscall_t)syz_init_net_socket},