[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 1/5] qcow1: Make padding in the header explic
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-devel] [PATCH v2 1/5] qcow1: Make padding in the header explicit |
Date: |
Fri, 16 May 2014 12:41:11 +0200 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
Am 15.05.2014 um 17:49 hat Eric Blake geschrieben:
> On 05/15/2014 08:21 AM, Kevin Wolf wrote:
> > We were relying on all compilers inserting the same padding in the
> > header struct that is used for the on-disk format. Let's not do that.
> > Mark the struct as packed and insert an explicit padding field for
> > compatibility.
> >
> > Cc: address@hidden
> > Signed-off-by: Kevin Wolf <address@hidden>
> > Reviewed-by: Benoit Canet <address@hidden>
> > ---
> > block/qcow.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/block/qcow.c b/block/qcow.c
> > index 937dd6d..3684794 100644
> > --- a/block/qcow.c
> > +++ b/block/qcow.c
> > @@ -48,9 +48,10 @@ typedef struct QCowHeader {
> > uint64_t size; /* in bytes */
> > uint8_t cluster_bits;
> > uint8_t l2_bits;
> > + uint16_t padding;
> > uint32_t crypt_method;
> > uint64_t l1_table_offset;
> > -} QCowHeader;
> > +} QEMU_PACKED QCowHeader;
>
> Is it worth a compile-time assertion that the correct size is achieved?
>
> [I don't know if glib provides such a macro, but gnulib has a verify()
> macro that could be used as:
>
> verify(sizeof(QCowHeader) == NNN)
>
> which expands to _Static_assert(sizeof(QCowHeader) == NNN) in new enough
> C compilers, and to something like
>
> extern int (*dummy1(void)) [sizeof (struct dummy2 {
> int dummy3: (sizeof(QCowHeader) == NNN) ? 1 : -1; })]
>
> on older compilers for reliable compile-time detection]
>
> But not a show-stopper to this patch as-is.
QEMU_BUILD_BUG_ON() is what you're looking for.
Do you think that would be a useful addition? With packed structs there
should be little that could make it go wrong. But if we want to add
this, I'd do it in a separate patch and for all image formats.
Kevin
pgpQtrfgEdjT1.pgp
Description: PGP signature
[Qemu-devel] [PATCH v2 5/5] qcow1: Stricter backing file length check, Kevin Wolf, 2014/05/15