How to use checkKCSAN method of host Package

Best Syzkaller code snippet using host.checkKCSAN

features_linux.go

Source:features_linux.go Github

copy

Full Screen

...20 checkFeature[FeatureFault] = checkFault21 checkFeature[FeatureLeak] = checkLeak22 checkFeature[FeatureNetInjection] = checkNetInjection23 checkFeature[FeatureNetDevices] = unconditionallyEnabled24 checkFeature[FeatureKCSAN] = checkKCSAN25 checkFeature[FeatureDevlinkPCI] = checkDevlinkPCI26 checkFeature[FeatureUSBEmulation] = checkUSBEmulation27}28func checkCoverage() string {29 if reason := checkDebugFS(); reason != "" {30 return reason31 }32 if !osutil.IsExist("/sys/kernel/debug/kcov") {33 return "CONFIG_KCOV is not enabled"34 }35 if err := osutil.IsAccessible("/sys/kernel/debug/kcov"); err != nil {36 return err.Error()37 }38 return ""39}40func checkComparisons() (reason string) {41 return checkCoverageFeature(FeatureComparisons)42}43func checkExtraCoverage() (reason string) {44 return checkCoverageFeature(FeatureExtraCoverage)45}46func checkCoverageFeature(feature int) (reason string) {47 if reason = checkDebugFS(); reason != "" {48 return reason49 }50 // TODO(dvyukov): this should run under target arch.51 // E.g. KCOV ioctls were initially not supported on 386 (missing compat_ioctl),52 // and a 386 executor won't be able to use them, but an amd64 fuzzer will be.53 fd, err := syscall.Open("/sys/kernel/debug/kcov", syscall.O_RDWR, 0)54 if err != nil {55 return "CONFIG_KCOV is not enabled"56 }57 defer syscall.Close(fd)58 // Trigger host target lazy initialization, it will fill linux.KCOV_INIT_TRACE.59 // It's all wrong and needs to be refactored.60 if _, err := prog.GetTarget(runtime.GOOS, runtime.GOARCH); err != nil {61 return fmt.Sprintf("failed to get target: %v", err)62 }63 coverSize := uintptr(64 << 10)64 _, _, errno := syscall.Syscall(65 syscall.SYS_IOCTL, uintptr(fd), linux.KCOV_INIT_TRACE, coverSize)66 if errno != 0 {67 return fmt.Sprintf("ioctl(KCOV_INIT_TRACE) failed: %v", errno)68 }69 mem, err := syscall.Mmap(fd, 0, int(coverSize*unsafe.Sizeof(uintptr(0))),70 syscall.PROT_READ|syscall.PROT_WRITE, syscall.MAP_SHARED)71 if err != nil {72 return fmt.Sprintf("KCOV mmap failed: %v", err)73 }74 defer func() {75 if err := syscall.Munmap(mem); err != nil {76 reason = fmt.Sprintf("munmap failed: %v", err)77 }78 }()79 switch feature {80 case FeatureComparisons:81 _, _, errno = syscall.Syscall(syscall.SYS_IOCTL,82 uintptr(fd), linux.KCOV_ENABLE, linux.KCOV_TRACE_CMP)83 if errno != 0 {84 if errno == 524 { // ENOTSUPP85 return "CONFIG_KCOV_ENABLE_COMPARISONS is not enabled"86 }87 return fmt.Sprintf("ioctl(KCOV_TRACE_CMP) failed: %v", errno)88 }89 case FeatureExtraCoverage:90 arg := KcovRemoteArg{91 TraceMode: uint32(linux.KCOV_TRACE_PC),92 AreaSize: uint32(coverSize * unsafe.Sizeof(uintptr(0))),93 NumHandles: 0,94 CommonHandle: 0,95 }96 _, _, errno = syscall.Syscall(syscall.SYS_IOCTL,97 uintptr(fd), linux.KCOV_REMOTE_ENABLE, uintptr(unsafe.Pointer(&arg)))98 if errno != 0 {99 if errno == 25 { // ENOTTY100 return "extra coverage is not supported by the kernel"101 }102 return fmt.Sprintf("ioctl(KCOV_REMOTE_ENABLE) failed: %v", errno)103 }104 default:105 panic("unknown feature in checkCoverageFeature")106 }107 defer func() {108 _, _, errno = syscall.Syscall(syscall.SYS_IOCTL, uintptr(fd), linux.KCOV_DISABLE, 0)109 if errno != 0 {110 reason = fmt.Sprintf("ioctl(KCOV_DISABLE) failed: %v", errno)111 }112 }()113 return ""114}115type KcovRemoteArg struct {116 TraceMode uint32117 AreaSize uint32118 NumHandles uint32119 CommonHandle uint64120 // Handles []uint64 goes here.121}122func checkFault() string {123 if err := osutil.IsAccessible("/proc/self/make-it-fail"); err != nil {124 return "CONFIG_FAULT_INJECTION is not enabled"125 }126 if err := osutil.IsAccessible("/proc/thread-self/fail-nth"); err != nil {127 return "kernel does not have systematic fault injection support"128 }129 if reason := checkDebugFS(); reason != "" {130 return reason131 }132 if err := osutil.IsAccessible("/sys/kernel/debug/failslab/ignore-gfp-wait"); err != nil {133 return "CONFIG_FAULT_INJECTION_DEBUG_FS or CONFIG_FAILSLAB are not enabled"134 }135 return ""136}137func checkLeak() string {138 if reason := checkDebugFS(); reason != "" {139 return reason140 }141 fd, err := syscall.Open("/sys/kernel/debug/kmemleak", syscall.O_RDWR, 0)142 if err != nil {143 return "CONFIG_DEBUG_KMEMLEAK is not enabled"144 }145 defer syscall.Close(fd)146 if _, err := syscall.Write(fd, []byte("scan=off")); err != nil {147 if err == syscall.EBUSY {148 return "KMEMLEAK disabled: increase CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE or unset CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF"149 }150 return fmt.Sprintf("/sys/kernel/debug/kmemleak write failed: %v", err)151 }152 return ""153}154func checkSandboxNamespace() string {155 if err := osutil.IsAccessible("/proc/self/ns/user"); err != nil {156 return err.Error()157 }158 return ""159}160func checkSandboxAndroid() string {161 if err := osutil.IsAccessible("/sys/fs/selinux/policy"); err != nil {162 return err.Error()163 }164 return ""165}166func checkNetInjection() string {167 if err := osutil.IsAccessible("/dev/net/tun"); err != nil {168 return err.Error()169 }170 return ""171}172func checkUSBEmulation() string {173 if err := osutil.IsAccessible("/dev/raw-gadget"); err != nil {174 return err.Error()175 }176 return ""177}178func checkDebugFS() string {179 if err := osutil.IsAccessible("/sys/kernel/debug"); err != nil {180 return "debugfs is not enabled or not mounted"181 }182 return ""183}184func checkKCSAN() string {185 if err := osutil.IsAccessible("/sys/kernel/debug/kcsan"); err != nil {186 return err.Error()187 }188 return ""189}190func checkDevlinkPCI() string {191 if err := osutil.IsAccessible("/sys/bus/pci/devices/0000:00:10.0/"); err != nil {192 return "PCI device 0000:00:10.0 is not available"193 }194 return ""195}...

Full Screen

Full Screen

checkKCSAN

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 if len(os.Args) != 2 {4 fmt.Fprintf(os.Stderr, "Usage: %s host:port", os.Args[0])5 os.Exit(1)6 }7 tcpAddr, err := net.ResolveTCPAddr("tcp4", service)8 checkError(err)9 conn, err := net.DialTCP("tcp", nil, tcpAddr)10 checkError(err)11 _, err = conn.Write([]byte("HEAD / HTTP/1.0\r\n\r\n"))12 checkError(err)13 result, err := readFully(conn)14 checkError(err)15 fmt.Println(string(result))16 os.Exit(0)17}18func readFully(conn *net.TCPConn) ([]byte, error) {19 defer conn.CloseRead()20 result := make([]byte, 0, 512)21 buf := make([]byte, 512)22 for {23 n, err := conn.Read(buf[0:])24 result = append(result, buf[0:n]...)25 if err != nil {26 }27 }28}29func checkError(err error) {30 if err != nil {31 fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error())32 os.Exit(1)33 }34}35import (36func main() {37 if len(os.Args) != 2 {38 fmt.Fprintf(os.Stderr, "Usage: %s host:port", os.Args[0])39 os.Exit(1)40 }41 tcpAddr, err := net.ResolveTCPAddr("tcp4", service)42 checkError(err)43 conn, err := net.DialTCP("tcp", nil, tcpAddr)44 checkError(err)45 _, err = conn.Write([]byte("HEAD / HTTP/1.0\r\n\r\n"))46 checkError(err)47 result, err := readFully(conn)48 checkError(err)49 fmt.Println(string(result))50 os.Exit(0)51}52func readFully(conn *net.TCPConn) ([]byte, error) {53 defer conn.CloseRead()

Full Screen

Full Screen

checkKCSAN

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 h.AddHost(&h1)4 h.AddHost(&h2)5 fmt.Println(h.CheckKCSAN())6}

Full Screen

Full Screen

checkKCSAN

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 if len(os.Args) != 2 {4 fmt.Fprintf(os.Stderr, "Usage: %s hostname\n", os.Args[0])5 os.Exit(1)6 }7 ipAddr, err := net.ResolveIPAddr("ip4", service)8 if err != nil {9 fmt.Println("Resolution error", err.Error())10 os.Exit(1)11 }12 fmt.Print("Enter the port number: ")13 fmt.Scanln(&port)14 portNum, err = strconv.Atoi(port)15 for err != nil || portNum < 1 || portNum > 65535 {16 fmt.Println("Invalid port number")17 fmt.Print("Enter the port number: ")18 fmt.Scanln(&port)19 portNum, err = strconv.Atoi(port)20 }21 ipAddr, err = net.ResolveIPAddr("ip4", service)22 if err != nil {23 fmt.Println("Resolution error", err.Error())24 os.Exit(1)25 }26 fmt.Print("Enter the port number: ")27 fmt.Scanln(&port)28 portNum, err = strconv.Atoi(port)29 for err != nil || portNum < 1 || portNum > 65535 {30 fmt.Println("Invalid port number")31 fmt.Print("Enter the port number: ")32 fmt.Scanln(&port)33 portNum, err = strconv.Atoi(port)34 }35 ipAddr, err = net.ResolveIPAddr("ip4", service)36 if err != nil {37 fmt.Println("Resolution error", err.Error())38 os.Exit(1)39 }

Full Screen

Full Screen

checkKCSAN

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 h, err := host.Detect()4 if err != nil {5 fmt.Println(err)6 }7 hostInstance = reflect.NewAt(reflect.TypeOf(h).Elem(), unsafe.Pointer(h)).Elem()8 checkKCSAN = reflect.ValueOf(h).MethodByName("checkKCSAN")9 checkKCSAN.Call([]reflect.Value{hostInstance})10}

Full Screen

Full Screen

checkKCSAN

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 h := host.Host{}4 h.CheckKCSAN()5 fmt.Println(h.Output)6}7import (8func main() {9 h := host.Host{}10 h.CheckKCSAN()11 fmt.Println(h.Output)12}13import (14func main() {15 h := host.Host{}16 h.CheckKCSAN()17 fmt.Println(h.Output)18}19import (20func main() {21 h := host.Host{}22 h.CheckKCSAN()23 fmt.Println(h.Output)24}

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Syzkaller automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Most used method in

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful