File tree Expand file tree Collapse file tree 1 file changed +19
-6
lines changed Expand file tree Collapse file tree 1 file changed +19
-6
lines changed Original file line number Diff line number Diff line change 33package vmdetect
44
55import (
6+ "bufio"
67 "bytes"
78 "os"
89 "os/exec"
10+ "time"
911)
1012
1113/*
@@ -37,16 +39,27 @@ func checkKernelRingBuffer() bool {
3739 return false
3840 }
3941
40- buffer := make ([]byte , 1024 * 8 )
42+ defer file .Close ()
43+
44+ // Set a read timeout because otherwise reading kmsg (which is a character device) will block
45+ if err = file .SetReadDeadline (time .Now ().Add (time .Second )); err != nil {
46+ PrintError (err )
47+ return false
48+ }
49+
50+ reader := bufio .NewReader (file )
51+
52+ for {
53+ line , _ , err := reader .ReadLine ()
54+ if err != nil {
55+ if ! os .IsTimeout (err ) {
56+ PrintError (err )
57+ }
4158
42- // Only reads the first 100 lines (reading character device in Go is annoying)
43- for i := 0 ; i < 100 ; i ++ {
44- if _ , err = file .Read (buffer ); err != nil {
45- PrintError (err )
4659 return false
4760 }
4861
49- if bytes .Contains (buffer , []byte ("Hypervisor detected" )) {
62+ if bytes .Contains (line , []byte ("Hypervisor detected" )) {
5063 return true
5164 }
5265 }
You can’t perform that action at this time.
0 commit comments