]> git.ipfire.org Git - thirdparty/qemu.git/commit
file-posix: specify expected filetypes
authorJohn Snow <jsnow@redhat.com>
Tue, 10 Jul 2018 17:00:40 +0000 (13:00 -0400)
committerKevin Wolf <kwolf@redhat.com>
Thu, 12 Jul 2018 16:24:08 +0000 (18:24 +0200)
commit230ff73904e72dde2d7718c2da407786a1c72e57
tree04a8bf0cfe28d25482a65e64446f8b4c35c0204f
parenteb461485f4558e362fab905735b50987505bca44
file-posix: specify expected filetypes

Adjust each caller of raw_open_common to specify if they are expecting
host and character devices or not. Tighten expectations of file types upon
open in the common code and refuse types that are not expected.

This has two effects:

(1) Character and block devices are now considered deprecated for the
    'file' driver, which expects only S_IFREG, and
(2) no file-posix driver (file, host_cdrom, or host_device) can open
    directories now.

I don't think there's a legitimate reason to open directories as if
they were files. This prevents QEMU from opening and attempting to probe
a directory inode, which can break in exciting ways. One of those ways
is lseek on ext4/xfs, which will return 0x7fffffffffffffff as the file
size instead of EISDIR. This can coax QEMU into responding with a
confusing "file too big" instead of "Hey, that's not a file".

See: https://bugs.launchpad.net/qemu/+bug/1739304/
Signed-off-by: John Snow <jsnow@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
block/file-posix.c
qemu-doc.texi