]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Fix off-by-one error in BERI virtio driver
authorgonzo <gonzo@FreeBSD.org>
Mon, 11 Feb 2019 07:42:32 +0000 (07:42 +0000)
committergonzo <gonzo@FreeBSD.org>
Mon, 11 Feb 2019 07:42:32 +0000 (07:42 +0000)
commit9e141fd88fe790e076980d25cc8373b9c880efb8
tree658c67e45ce0524833660a472d0f06e079116e70
parenta7b65055d544680325d76ae2e94db29efa2fbedb
Fix off-by-one error in BERI virtio driver

The hardcoded ident is exactly 20 bytes long but sprintf adds terminating zero,
so there is one byte written out of array bounds.As a fix use strncpy it
appends \0 only if space allows and its behavior matches virtio spec:

When VIRTIO_BLK_T_GET_ID is issued, the device identifier, up to 20 bytes, is
written to the buffer. The identifier should be interpreted as an ascii string.
It is terminated with \0, unless it is exactly 20 bytes long.

PR: 202298
Reviewed by: br
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D18852
sys/dev/beri/virtio/virtio_block.c