From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Peter Maydell <peter.maydell@linaro.org>, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH RFC v3 1/3] vmstate: add VMS_MUST_EXIST
Date: Tue, 25 Mar 2014 10:40:44 +0000 [thread overview]
Message-ID: <20140325104043.GC2459@work-vm> (raw)
In-Reply-To: <1395698484-22562-2-git-send-email-mst@redhat.com>
* Michael S. Tsirkin (mst@redhat.com) wrote:
> Can be used to verify a required field exists or validate
> state in some other way.
>
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
> include/migration/vmstate.h | 1 +
> vmstate.c | 10 ++++++++++
> 2 files changed, 11 insertions(+)
>
> diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h
> index e7e1705..de970ab 100644
> --- a/include/migration/vmstate.h
> +++ b/include/migration/vmstate.h
> @@ -100,6 +100,7 @@ enum VMStateFlags {
> VMS_MULTIPLY = 0x200, /* multiply "size" field by field_size */
> VMS_VARRAY_UINT8 = 0x400, /* Array with size in uint8_t field*/
> VMS_VARRAY_UINT32 = 0x800, /* Array with size in uint32_t field*/
> + VMS_MUST_EXIST = 0x1000, /* Field must exist in input */
> };
>
> typedef struct {
> diff --git a/vmstate.c b/vmstate.c
> index 18b3732..236ce0b 100644
> --- a/vmstate.c
> +++ b/vmstate.c
> @@ -103,6 +103,10 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd,
> return ret;
> }
> }
> + } else if (field->flags & VMS_MUST_EXIST) {
> + fprintf(stderr, "Input validation failed: %s/%s\n",
> + vmsd->name, field->name);
> + return -1;
> }
> field++;
> }
> @@ -146,6 +150,12 @@ void vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd,
> field->info->put(f, addr, size);
> }
> }
> + } else {
> + if (field->flags & VMS_MUST_EXIST) {
> + fprintf(stderr, "Output state validation failed: %s/%s\n",
> + vmsd->name, field->name);
> + assert(!(field->flags & VMS_MUST_EXIST));
> + }
> }
> field++;
> }
> --
> MST
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Dave
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
next prev parent reply other threads:[~2014-03-25 10:41 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-24 22:01 [Qemu-devel] [PATCH RFC v3 0/3] state loading security issues Michael S. Tsirkin
2014-03-24 22:02 ` [Qemu-devel] [PATCH RFC v3 1/3] vmstate: add VMS_MUST_EXIST Michael S. Tsirkin
2014-03-25 10:40 ` Dr. David Alan Gilbert [this message]
2014-03-24 22:02 ` [Qemu-devel] [PATCH RFC v3 2/3] vmstate: add VMSTATE_TEST Michael S. Tsirkin
2014-03-25 10:49 ` Dr. David Alan Gilbert
2014-03-24 22:02 ` [Qemu-devel] [PATCH RFC v3 3/3] hpet: fix buffer overrun on invalid state load Michael S. Tsirkin
2014-03-25 10:57 ` Dr. David Alan Gilbert
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=20140325104043.GC2459@work-vm \
--to=dgilbert@redhat.com \
--cc=mst@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
/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.