From a5338d9cd2efcf914ba78edfe2615c7c0657b157 Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Mon, 6 Dec 2021 11:30:24 +0000 Subject: executor: spread overlapping fds There's a chance that the methods from common_bsd.h and common_linux.h could dup2 (and thus close) an fd belonging to a kcov instance. Prevent this by adjusting fd consts. --- executor/common_bsd.h | 2 +- executor/common_linux.h | 6 +++--- pkg/csource/generated.go | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/executor/common_bsd.h b/executor/common_bsd.h index 332e68e5f..7293df993 100644 --- a/executor/common_bsd.h +++ b/executor/common_bsd.h @@ -230,7 +230,7 @@ static void initialize_tun(int tun_id) } // Remap tun onto higher fd number to hide it from fuzzer and to keep // fd numbers stable regardless of whether tun is opened or not (also see kMaxFd). - const int kTunFd = 240; + const int kTunFd = 200; if (dup2(tunfd, kTunFd) < 0) fail("dup2(tunfd, kTunFd) failed"); close(tunfd); diff --git a/executor/common_linux.h b/executor/common_linux.h index 7df9476eb..cbf311b22 100644 --- a/executor/common_linux.h +++ b/executor/common_linux.h @@ -567,7 +567,7 @@ static void initialize_tun(void) } // Remap tun onto higher fd number to hide it from fuzzer and to keep // fd numbers stable regardless of whether tun is opened or not (also see kMaxFd). - const int kTunFd = 240; + const int kTunFd = 200; if (dup2(tunfd, kTunFd) < 0) fail("dup2(tunfd, kTunFd) failed"); close(tunfd); @@ -632,7 +632,7 @@ static void initialize_tun(void) #endif #if SYZ_EXECUTOR || __NR_syz_init_net_socket || SYZ_DEVLINK_PCI -const int kInitNetNsFd = 239; // see kMaxFd +const int kInitNetNsFd = 201; // see kMaxFd #endif #if SYZ_EXECUTOR || SYZ_DEVLINK_PCI || SYZ_NET_DEVICES @@ -2582,7 +2582,7 @@ static void initialize_vhci() // Remap vhci onto higher fd number to hide it from fuzzer and to keep // fd numbers stable regardless of whether vhci is opened or not (also see kMaxFd). - const int kVhciFd = 241; + const int kVhciFd = 202; if (dup2(vhci_fd, kVhciFd) < 0) fail("dup2(vhci_fd, kVhciFd) failed"); close(vhci_fd); diff --git a/pkg/csource/generated.go b/pkg/csource/generated.go index b914f3048..728806967 100644 --- a/pkg/csource/generated.go +++ b/pkg/csource/generated.go @@ -1757,7 +1757,7 @@ static void initialize_tun(int tun_id) return; #endif } - const int kTunFd = 240; + const int kTunFd = 200; if (dup2(tunfd, kTunFd) < 0) fail("dup2(tunfd, kTunFd) failed"); close(tunfd); @@ -2823,7 +2823,7 @@ static void initialize_tun(void) return; #endif } - const int kTunFd = 240; + const int kTunFd = 200; if (dup2(tunfd, kTunFd) < 0) fail("dup2(tunfd, kTunFd) failed"); close(tunfd); @@ -2875,7 +2875,7 @@ static void initialize_tun(void) #endif #if SYZ_EXECUTOR || __NR_syz_init_net_socket || SYZ_DEVLINK_PCI -const int kInitNetNsFd = 239; +const int kInitNetNsFd = 201; #endif #if SYZ_EXECUTOR || SYZ_DEVLINK_PCI || SYZ_NET_DEVICES @@ -5973,7 +5973,7 @@ static void initialize_vhci() vhci_fd = open("/dev/vhci", O_RDWR); if (vhci_fd == -1) fail("open /dev/vhci failed"); - const int kVhciFd = 241; + const int kVhciFd = 202; if (dup2(vhci_fd, kVhciFd) < 0) fail("dup2(vhci_fd, kVhciFd) failed"); close(vhci_fd); -- cgit mrf-deployment