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
2015-05-08 14:11:10 +03:00
2013-04-18 13:50:53 +02:00
2015-02-06 16:11:38 +00:00
2015-03-19 11:30:37 +03:00
2015-04-30 13:21:42 +02:00
2015-05-11 14:49:03 +01:00
2015-05-11 16:25:33 +01:00
2015-05-11 08:59:07 -04:00
2015-03-09 09:14:28 +00:00
2015-05-14 12:15:18 -07:00
2015-05-20 10:23:08 +02:00
2012-09-07 09:02:44 +03:00
2015-04-04 09:45:59 +03:00
2014-06-16 13:24:35 +02:00
2013-09-05 09:40:31 -05:00
2015-04-28 15:36:09 +02:00
2013-10-11 09:34:56 -07:00
2008-10-12 17:54:42 +00:00
2015-04-26 16:49:24 +01:00
2015-04-30 16:05:48 +03:00
2013-07-23 02:41:31 +02:00
2015-05-08 14:11:10 +03:00
2015-05-12 10:40:31 +01:00
2015-02-05 17:16:14 +01:00
2015-04-30 16:55:16 +02:00
2015-05-11 16:25:33 +01:00
2015-05-22 17:08:01 +02:00
2015-05-22 17:08:01 +02:00
2014-05-24 00:07:29 +04:00
2015-05-11 08:59:07 -04:00
2013-10-11 09:34:56 -07:00
2015-05-14 12:15:18 -07:00
2015-04-25 22:05:07 +01:00
2013-10-11 09:34:56 -07:00

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

- QEMU team
Description
A fork of QEMU-Nyx which is better suited for my bachelors thesis
Readme 154 MiB
Languages
C 90.3%
Dylan 2.5%
Python 2.1%
C++ 2%
Shell 1.7%
Other 1.4%