mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-08-29 12:54:10 +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) {
|
if q.cfg.Logger.V(1) {
|
||||||
q.cfg.Logger.Infof("%s", string(line))
|
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)
|
close(fromVMCh)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user