Go to file
Daniel P. Berrange 8336aafae1 qcow2/qcow: protect against uninitialized encryption key
When a qcow[2] file is opened, if the header reports an
encryption method, this is used to set the 'crypt_method_header'
field on the BDRVQcow[2]State struct, and the 'encrypted' flag
in the BDRVState struct.

When doing I/O operations, the 'crypt_method' field on the
BDRVQcow[2]State struct is checked to determine if encryption
needs to be applied.

The crypt_method_header value is copied into crypt_method when
the bdrv_set_key() method is called.

The QEMU code which opens a block device is expected to always
do a check

   if (bdrv_is_encrypted(bs)) {
       bdrv_set_key(bs, ....key...);
   }

If code forgets to do this, then 'crypt_method' is never set
and so when I/O is performed, QEMU writes plain text data
into a sector which is expected to contain cipher text, or
when reading, will return cipher text instead of plain
text.

Change the qcow[2] code to consult bs->encrypted when deciding
whether encryption is required, and assert(s->crypt_method)
to protect against cases where the caller forgets to set the
encryption key.

Also put an assert in the set_key methods to protect against
the case where the caller sets an encryption key on a block
device that does not have encryption

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2015-05-22 17:08:01 +02:00
audio audio: Don't free hw resources until after hw backend is stopped 2014-12-22 23:12:25 +00:00
backends Remove various unused functions 2015-05-08 14:11:10 +03:00
block qcow2/qcow: protect against uninitialized encryption key 2015-05-22 17:08:01 +02:00
bsd-user linux-user, bsd-user: Remove two calls to cpu_exec_init_all 2015-04-27 18:24:17 +02:00
default-configs arm: Introduce Xilinx ZynqMP SoC 2015-05-18 16:41:09 +01:00
disas cris: remove unused cris_cond15 declarations 2015-03-19 11:11:55 +03:00
docs qapi: Turn generators' mandatory option -i into an argument 2015-05-14 18:41:23 +02:00
dtc@bc895d6d09
fpu softfloat: expand out STATUS macro 2015-02-06 16:11:38 +00:00
fsdev Fix typos in comments 2015-03-19 11:30:37 +03:00
gdb-xml
hw nvme: support NVME_VOLATILE_WRITE_CACHE feature 2015-05-22 17:08:00 +02:00
include block: minimal bounce buffer alignment 2015-05-22 09:37:33 +01:00
libcacard libcacard: do not use full paths for include files in the same dir 2015-04-30 16:05:48 +03:00
libdecnumber
linux-headers linux-headers: update 2015-04-30 13:21:42 +02:00
linux-user linux-user/arm: Correct TARGET_NR_timerfd to TARGET_NR_timerfd_create 2015-05-18 17:45:10 +01:00
migration migration: Add qmp commands to set and query parameters 2015-05-07 18:31:53 +02:00
net net: add MAC address string printer 2015-05-11 14:49:03 +01:00
pc-bios Makefile.target: set icon for binary file on Mac OS X 2015-05-19 09:11:17 +01:00
pixman@87eea99e44
po
qapi pc, virtio enhancements 2015-05-11 16:25:33 +01:00
qga qapi: Use 'struct' instead of 'type' in schema 2015-05-05 18:39:01 +02:00
qobject json-parser: Accept 'null' in QMP 2015-05-11 08:59:07 -04:00
qom qom: Add can_be_deleted callback to UserCreatableClass 2015-04-01 10:06:38 +02:00
roms pseries: Update SLOF firmware image to qemu-slof-20150313 2015-03-25 22:49:45 +01:00
scripts qapi: Inline gen_command_decl_prologue(), gen_command_def_prologue() 2015-05-14 18:41:33 +02:00
slirp
stubs pci, pc, virtio fixes and cleanups 2015-03-09 09:14:28 +00:00
sysconfigs/target
target-alpha Revert "target-alpha: Add vector implementation for CMPBGE" 2015-05-22 12:30:13 +01:00
target-arm target-arm: Remove unneeded '+' 2015-05-18 20:04:19 +01:00
target-cris cris: remove unused cris_cond15 declarations 2015-03-19 11:11:55 +03:00
target-i386 kvm: add support for memory transaction attributes 2015-04-30 16:55:32 +02:00
target-lm32 tcg: Change translator-side labels to a pointer 2015-03-13 12:28:18 -07:00
target-m68k tcg: Change translator-side labels to a pointer 2015-03-13 12:28:18 -07:00
target-microblaze microblaze: cpu: delete unused cpu_interrupts_enabled 2015-04-30 16:05:48 +03:00
target-mips kvm: add support for memory transaction attributes 2015-04-30 16:55:32 +02:00
target-moxie target-moxie: Fix warnings from Sparse (one-bit signed bitfield) 2015-03-19 11:11:55 +03:00
target-openrisc openrisc: cpu: Remove unused cpu_get_pc 2015-04-30 16:06:18 +03:00
target-ppc kvm: add support for memory transaction attributes 2015-04-30 16:55:32 +02:00
target-s390x s390x: Add interlocked access facility 1 instructions 2015-05-13 14:48:54 +02:00
target-sh4 tcg: Change translator-side labels to a pointer 2015-03-13 12:28:18 -07:00
target-sparc tcg: Change translator-side labels to a pointer 2015-03-13 12:28:18 -07:00
target-tricore target-tricore: fix rfe not restoring the PC 2015-05-11 14:25:49 +02:00
target-unicore32 tcg: Change translator-side labels to a pointer 2015-03-13 12:28:18 -07:00
target-xtensa tcg: Change translator-side labels to a pointer 2015-03-13 12:28:18 -07:00
tcg tcg: Add MO_ALIGN, MO_UNALN 2015-05-14 12:15:18 -07:00
tests qemu-iotests: Make debugging python tests easier 2015-05-22 17:08:01 +02:00
trace Remove superfluous '\n' around error_report() 2015-03-10 08:15:33 +03:00
ui vnc: Tweak error when init fails 2015-05-20 10:23:08 +02:00
util qemu-sockets: Report explicit error if unlink fails 2015-05-20 10:23:08 +02:00
.exrc
.gitignore gitignore: Ignore more .pod files. 2015-04-04 09:45:59 +03:00
.gitmodules
.mailmap
.travis.yml .travis.yml: Add "--enable-modules" 2015-01-26 12:27:05 +01:00
accel.c
aio-posix.c AioContext: acquire/release AioContext during aio_poll 2015-04-28 15:36:08 +02:00
aio-win32.c AioContext: acquire/release AioContext during aio_poll 2015-04-28 15:36:08 +02:00
arch_init.c migration: Fix migration state update issue 2015-05-07 18:31:54 +02:00
async.c iothread: release iothread around aio_poll 2015-04-28 15:36:08 +02:00
balloon.c balloon: improve error msg when adding second device 2015-04-24 14:18:05 -04:00
block.c block: Detect multiplication overflow in bdrv_getlength 2015-05-22 17:08:01 +02:00
blockdev-nbd.c nbd: Fix up comment after commit e140177 2015-03-25 13:38:07 +01:00
blockdev.c block: Ensure consistent bitmap function prototypes 2015-04-28 15:36:10 +02:00
blockjob.c blockjob: Allow nested pause 2015-04-28 15:36:09 +02:00
bootdevice.c misc: fix typos in copyright declaration 2015-03-26 14:21:43 +01:00
bt-host.c
bt-vhci.c
Changelog
CODING_STYLE
configure configure: Add workaround for ccache and clang 2015-05-22 09:37:33 +01:00
COPYING
COPYING.LIB
coroutine-gthread.c
coroutine-sigaltstack.c coroutine-sigaltstack: Change jmp_buf to sigjmp_buf 2014-11-11 11:07:55 +03:00
coroutine-ucontext.c coroutine-ucontext: use __thread 2015-01-13 13:43:28 +00:00
coroutine-win32.c
cpu-exec.c - vhost-scsi: add bootindex property 2015-02-24 13:58:18 +00:00
cpus.c qmp: Add qom_path field to query-cpus command 2015-05-14 17:25:46 +02:00
cputlb.c Add MemTxAttrs to the IOTLB 2015-04-26 16:49:24 +01:00
device_tree.c machine: query phandle-start machine property 2015-03-11 18:17:11 +01:00
device-hotplug.c pci-hotplug-old: Has been dead for five major releases, bury 2015-03-01 12:37:54 +01:00
disas.c
dma-helpers.c range: remove useless inclusions 2015-04-30 16:05:48 +03:00
dump.c
exec.c exec: move rcu_read_lock/unlock to address_space_translate callers 2015-04-30 16:55:32 +02:00
gdbstub.c gdbstub: avoid possible NULL pointer dereference 2015-03-10 08:15:34 +03:00
HACKING
hmp-commands.hx migration: Add hmp interface to set and query parameters 2015-05-07 18:31:54 +02:00
hmp.c migration: Add hmp interface to set and query parameters 2015-05-07 18:31:54 +02:00
hmp.h migration: Add hmp interface to set and query parameters 2015-05-07 18:31:54 +02:00
iohandler.c
ioport.c - miscellaneous cleanups for TCG (Emilio) and NBD (Bogdan) 2015-04-30 12:04:11 +01:00
iothread.c Remove various unused functions 2015-05-08 14:11:10 +03:00
kvm-all.c kvm: add support for memory transaction attributes 2015-04-30 16:55:32 +02:00
kvm-stub.c pc: kvm: check if KVM has free memory slots to avoid abort() 2014-11-23 12:11:29 +02:00
LICENSE vfio: move hw/misc/vfio.c to hw/vfio/pci.c Move vfio.h into include/hw/vfio 2014-12-19 15:24:06 -07:00
main-loop.c
MAINTAINERS -----BEGIN PGP SIGNATURE----- 2015-05-12 10:40:31 +01:00
Makefile qapi: Turn generators' mandatory option -i into an argument 2015-05-14 18:41:23 +02:00
Makefile.objs QJSON: Add JSON writer 2015-02-05 17:16:14 +01:00
Makefile.target Makefile.target: set icon for binary file on Mac OS X 2015-05-19 09:11:17 +01:00
memory_mapping.c
memory.c mtree: also print disabled regions 2015-04-30 16:55:16 +02:00
module-common.c
monitor.c pc, virtio enhancements 2015-05-11 16:25:33 +01:00
nbd.c qemu-nbd: only send a limited number of errno codes on the wire 2015-05-08 14:45:11 +02:00
numa.c numa: Print warning if no node is assigned to a CPU 2015-03-19 16:20:15 -03:00
os-posix.c rcu: do not create thread in pthread_atfork callback 2015-04-01 10:06:38 +02:00
os-win32.c
page_cache.c xbzrle: rebuild the cache_is_cached function 2015-01-15 17:49:43 +05:30
qapi-schema.json qmp: Add qom_path field to query-cpus command 2015-05-14 17:25:46 +02:00
qdev-monitor.c qom: Implement info qom-tree HMP command 2015-03-17 14:31:21 +01:00
qdict-test-data.txt
qemu-bridge-helper.c
qemu-char.c qemu-char: remove unused list node from FDCharDriver 2015-04-30 16:05:49 +03:00
qemu-coroutine-io.c coroutine-io: Return -errno in case of error 2015-03-18 12:07:21 +01:00
qemu-coroutine-lock.c coroutine: remove unnecessary parentheses in qemu_co_queue_empty 2015-04-30 16:05:49 +03:00
qemu-coroutine-sleep.c
qemu-coroutine.c coroutine: Clean up qemu_coroutine_enter() 2015-03-09 11:11:59 +01:00
qemu-doc.texi raw-posix: Deprecate host floppy passthrough 2015-03-19 11:43:02 +01:00
qemu-img-cmds.hx
qemu-img.c qemu-img convert: Rewrite copying logic 2015-04-28 15:36:09 +02:00
qemu-img.texi
qemu-io-cmds.c qemu-io: Use getopt() correctly 2015-05-22 17:08:01 +02:00
qemu-io.c qemu-io: Use getopt() correctly 2015-05-22 17:08:01 +02:00
qemu-log.c qemu-log: Correct help text of 'log cpu_reset' 2015-02-10 09:27:20 +03:00
qemu-nbd.c nbd: Set block size to BDRV_SECTOR_SIZE 2015-03-18 12:07:01 +01:00
qemu-nbd.texi
qemu-options-wrapper.h
qemu-options.h
qemu-options.hx qemu-options: trivial spelling fix (messsage) 2015-04-30 16:05:48 +03:00
qemu-seccomp.c seccomp: add mlockall to whitelist 2015-01-23 14:07:08 +01:00
qemu-tech.texi
qemu-timer.c qemu-timer.c: Trim list of included headers 2015-01-26 18:15:54 +00:00
qemu.nsi
qemu.sasl
qjson.c QJSON: Use OBJECT_CHECK 2015-05-11 08:59:07 -04:00
qmp-commands.hx qmp: Add qom_path field to query-cpus command 2015-05-14 17:25:46 +02:00
qmp.c qapi: Drop inline nested struct in query-version 2015-05-05 18:39:02 +02:00
qtest.c qtest: Use qemu_opt_set() instead of qemu_opts_parse() 2015-02-26 14:52:13 +01:00
README
rules.mak rules.mak: Force CFLAGS for all objects in DSO 2015-05-08 14:45:11 +02:00
savevm.c error: Replace error_report() & error_free() with error_report_err() 2015-03-19 11:11:55 +03:00
softmmu_template.h tcg: Add MO_ALIGN, MO_UNALN 2015-05-14 12:15:18 -07:00
spice-qemu-char.c spice: Add missing 'static' attribute 2015-02-10 10:26:05 +03:00
tcg-runtime.c
tci.c tcg: Push merged memop+mmu_idx parameter to softmmu routines 2015-05-14 12:15:14 -07:00
thread-pool.c thread-pool: clean up thread_pool_completion_bh() 2015-04-28 15:36:09 +02:00
thunk.c
tpm.c tpm: Remove superfluous '\n' around error_report() 2015-03-10 08:15:33 +03:00
trace-events qmp-event: add event notification for memory hot unplug error 2015-04-27 21:09:07 +02:00
translate-all.c exec: move rcu_read_lock/unlock to address_space_translate callers 2015-04-30 16:55:32 +02:00
translate-all.h
user-exec.c user-exec.c: fix build on NetBSD/sparc64 and NetBSD/arm 2015-03-13 15:57:00 +00:00
VERSION Open 2.4 development tree 2015-04-25 22:05:07 +01:00
version.rc
vl.c sdl2: add support for display rendering using opengl. 2015-05-05 10:48:26 +02:00
xen-common-stub.c
xen-common.c
xen-hvm-stub.c xen: Remove xen_cmos_set_s3_resume() 2015-03-10 08:15:33 +03:00
xen-hvm.c Xen: Use the ioreq-server API when available 2015-01-20 14:24:10 +00:00
xen-mapcache.c xen: add a lock for the mapcache 2015-01-20 14:24:17 +00:00

Read the documentation in qemu-doc.html or on http://wiki.qemu-project.org

- QEMU team