On 11/10/2014 06:45 AM, Max Reitz wrote: > No longer refuse to open images with a different refcount entry width > than 16 bits; only reject images with a refcount width larger than 64 > bits (which is prohibited by the specification). > > Signed-off-by: Max Reitz <mre...@redhat.com> > --- > block/qcow2.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/block/qcow2.c b/block/qcow2.c > index d70e927..b718e75 100644 > --- a/block/qcow2.c > +++ b/block/qcow2.c > @@ -677,10 +677,10 @@ static int qcow2_open(BlockDriverState *bs, QDict > *options, int flags, > } > > /* Check support for various header values */ > - if (header.refcount_order != 4) { > - report_unsupported(bs, errp, "%d bit reference counts", > - 1 << header.refcount_order); > - ret = -ENOTSUP; > + if (header.refcount_order > 6) { > + error_setg(errp, "Reference count entry width too large (%i bit); > may " > + "not exceed 64 bit", 1 << header.refcount_order);
Overflows if I fuzz an image to put 32 or larger into header.refcount_order. It may be better to just tweak the error message to state that the order cannot exceed 6, rather than trying to display the actual bit width that the user is requesting, as then you avoid the '1 << problem'. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature