[libvirt] [PATCH 34/26] snapshot: add <disks> to snapshot xml

Eric Blake eblake at redhat.com
Tue Aug 23 15:01:09 UTC 2011


On 08/19/2011 03:58 PM, Eric Blake wrote:
> Adds an optional element to<domainsnapshot>, which will be used
> to give user control over external snapshot filenames on input,
> and specify generated filenames on output.

Another couple of problems.

> +static int
> +disksorter(const void *a, const void *b)
> +{
> +    const virDomainSnapshotDiskDef *diska = a;
> +    const virDomainSnapshotDiskDef *diskb = b;
> +
> +    return diskb->index - diska->index;
> +}

Backwards.  Should be a - b.

>
> +
> +    /* Provide defaults for all remaining disks.  */
> +    if (VIR_EXPAND_N(def->disks, def->ndisks,
> +                     def->dom->ndisks - def->ndisks)<  0) {

This updates def->ndisks,

> +        virReportOOMError();
> +        goto cleanup;
> +    }
> +
> +    for (i = 0; i<  def->dom->ndisks; i++) {
> +        virDomainSnapshotDiskDefPtr disk;
> +
> +        ignore_value(virBitmapGetBit(map, i,&inuse));
> +        if (inuse)
> +            continue;
> +        disk =&def->disks[def->ndisks++];

and this ends up accessing beyond array bounds.

> +                ignore_value(virAsprintf(&disk->file, "%*s%s",
> +                                         (int) (tmp - original), original,
> +                                         def->name));

Needs to be %.*s, not %*s, in order to truncate correctly.

I'll just post a v3 of this patch, instead of adding to the squash list.

-- 
Eric Blake   eblake at redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org




More information about the libvir-list mailing list