mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-08-28 20:41:04 +00:00
Merge pull request #89 from woshijpf/master
qemu/qmp: fix readLoop() reuse scanner.Bytes() underlying array problem
This commit is contained in:
commit
4963fb587f
11
qemu/qmp.go
11
qemu/qmp.go
@ -247,7 +247,16 @@ func (q *QMP) readLoop(fromVMCh chan<- []byte) {
|
||||
if q.cfg.Logger.V(1) {
|
||||
q.cfg.Logger.Infof("%s", string(line))
|
||||
}
|
||||
fromVMCh <- line
|
||||
|
||||
// Since []byte channel type transfer slice info(include slice underlying array pointer, len, cap)
|
||||
// between channel sender and receiver. scanner.Bytes() returned slice's underlying array
|
||||
// may point to data that will be overwritten by a subsequent call to Scan(reference from:
|
||||
// https://golang.org/pkg/bufio/#Scanner.Bytes), which may make receiver read mixed data,
|
||||
// so we need to copy line to new allocated space and then send to channel receiver
|
||||
sendLine := make([]byte, len(line))
|
||||
copy(sendLine, line)
|
||||
|
||||
fromVMCh <- sendLine
|
||||
}
|
||||
close(fromVMCh)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user