All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Daniel P. Berrange" <berrange@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: kwolf@redhat.com, qemu-block@nongnu.org, qemu-devel@nongnu.org,
	stefanha@redhat.com, kraxel@redhat.com
Subject: Re: [Qemu-devel] [PATCH RFC 1/2] block: Limit opening of encrypted images to qemu-img
Date: Tue, 10 Mar 2015 18:15:46 +0000	[thread overview]
Message-ID: <20150310181546.GH14255@redhat.com> (raw)
In-Reply-To: <1426008400-22016-2-git-send-email-armbru@redhat.com>

On Tue, Mar 10, 2015 at 06:26:39PM +0100, Markus Armbruster wrote:
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
>  block/qcow.c          | 5 +++++
>  block/qcow2.c         | 5 +++++
>  include/block/block.h | 3 +--
>  qemu-img.c            | 1 +
>  4 files changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/block/qcow.c b/block/qcow.c
> index 0558969..f54fc86 100644
> --- a/block/qcow.c
> +++ b/block/qcow.c
> @@ -155,6 +155,11 @@ static int qcow_open(BlockDriverState *bs, QDict *options, int flags,
>      }
>      s->crypt_method_header = header.crypt_method;
>      if (s->crypt_method_header) {
> +        if (!(flags & BDRV_O_CRYPT_OK)) {
> +            error_setg(errp, "image is encrypted, use qemu-img to decrypt it");
> +            ret = -EINVAL;
> +            goto fail;
> +        }
>          bs->encrypted = 1;
>      }
>      s->cluster_bits = header.cluster_bits;
> diff --git a/block/qcow2.c b/block/qcow2.c
> index 50e0a94..b12c67a 100644
> --- a/block/qcow2.c
> +++ b/block/qcow2.c
> @@ -693,6 +693,11 @@ static int qcow2_open(BlockDriverState *bs, QDict *options, int flags,
>      }
>      s->crypt_method_header = header.crypt_method;
>      if (s->crypt_method_header) {
> +        if (!(flags & BDRV_O_CRYPT_OK)) {
> +            error_setg(errp, "image is encrypted, use qemu-img to decrypt it");
> +            ret = -EINVAL;
> +            goto fail;
> +        }
>          bs->encrypted = 1;
>      }
>  
> diff --git a/include/block/block.h b/include/block/block.h
> index 649c269..76b6d3c 100644
> --- a/include/block/block.h
> +++ b/include/block/block.h
> @@ -76,6 +76,7 @@ typedef enum {
>  #define BDRV_O_PROTOCOL    0x8000  /* if no block driver is explicitly given:
>                                        select an appropriate protocol driver,
>                                        ignoring the format layer */
> +#define BDRV_O_CRYPT_OK    0x10000 /* open even when image is encrypted */
>  
>  #define BDRV_O_CACHE_MASK  (BDRV_O_NOCACHE | BDRV_O_CACHE_WB | BDRV_O_NO_FLUSH)
>  
> @@ -382,8 +383,6 @@ BlockDriverState *bdrv_next(BlockDriverState *bs);
>  int bdrv_is_encrypted(BlockDriverState *bs);
>  int bdrv_key_required(BlockDriverState *bs);
>  int bdrv_set_key(BlockDriverState *bs, const char *key);
> -void bdrv_add_key(BlockDriverState *bs, const char *key, Error **errp);

Nitpick, this method isn't deleted until your next patch, so this belongs
there.

> -int bdrv_query_missing_keys(void);

Fun, a method which doesn't even exist :-)

>  void bdrv_iterate_format(void (*it)(void *opaque, const char *name),
>                           void *opaque);
>  const char *bdrv_get_node_name(const BlockDriverState *bs);
> diff --git a/qemu-img.c b/qemu-img.c
> index 7ac7f56..bcd7d3f 100644
> --- a/qemu-img.c
> +++ b/qemu-img.c
> @@ -302,6 +302,7 @@ static BlockBackend *img_open(const char *id, const char *filename,
>          qdict_put(options, "driver", qstring_from_str(fmt));
>      }
>  
> +    flags |= BDRV_O_CRYPT_OK;
>      blk = blk_new_open(id, filename, NULL, options, flags, &local_err);
>      if (!blk) {
>          error_report("Could not open '%s': %s", filename,

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|

  reply	other threads:[~2015-03-10 18:16 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-10 17:26 [Qemu-devel] [PATCH RFC 0/2] Limit support for encrypted images to qemu-img Markus Armbruster
2015-03-10 17:26 ` [Qemu-devel] [PATCH RFC 1/2] block: Limit opening of " Markus Armbruster
2015-03-10 18:15   ` Daniel P. Berrange [this message]
2015-03-11  8:57     ` Markus Armbruster
2015-03-10 18:21   ` Eric Blake
2015-03-11 10:14   ` Kevin Wolf
2015-03-11 11:59     ` Markus Armbruster
2015-03-11 12:22       ` Kevin Wolf
2015-03-10 17:26 ` [Qemu-devel] [PATCH RFC 2/2] block: Drop code supporting encryption outside qemu-img Markus Armbruster
2015-03-10 18:25   ` Eric Blake
2015-03-10 18:13 ` [Qemu-devel] [PATCH RFC 0/2] Limit support for encrypted images to qemu-img Daniel P. Berrange
2015-03-11  8:55   ` Markus Armbruster
2015-03-11  9:59     ` Daniel P. Berrange
2015-03-11 10:10       ` Kevin Wolf
2015-03-11 12:05       ` Markus Armbruster
2015-03-12 16:58   ` Paolo Bonzini
2015-03-13  8:26     ` Kevin Wolf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150310181546.GH14255@redhat.com \
    --to=berrange@redhat.com \
    --cc=armbru@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.