Re: [libvirt] PATCH: Support storage copy on write volumes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Jim Meyering píše v Čt 22. 01. 2009 v 19:15 +0100:
> > +static int
> > +cowGetBackingStore(virConnectPtr conn,
> > +                   char **res,
> > +                   const unsigned char *buf,
> > +                   size_t buf_size)
> > +{
> > +    size_t len;
> > +
> > +    *res = NULL;
> > +    if (buf_size < 4+4+1024)
> > +        return BACKING_STORE_INVALID;
> > +    if (buf[4+4] == '\0') /* cow_header_v2.backing_file[0] */
> > +        return BACKING_STORE_OK;
> > +
> > +    len = 1024;
> > +    if (VIR_ALLOC_N(*res, len + 1) < 0) {
> > +        virStorageReportError(conn, VIR_ERR_NO_MEMORY, _("backing store path"));
> > +        return BACKING_STORE_ERROR;
> > +    }
> > +    memcpy(*res, buf + 4+4, len); /* cow_header_v2.backing_file */
> > +    (*res)[len] = '\0';
> > +    if (VIR_REALLOC_N(*res, strlen(*res) + 1) < 0) {
> 
> Is this just-copied 1024-byte block of data guaranteed
> not to contain any NUL bytes?  Or maybe you just want that
> NUL-terminated string?
The 1024 bytes should contain a NUL-terminated string.  This code
ensures there is a trailing NUL, then resizes *res to only contain the
first NUL-terminated string.  We could avoid the realloc() by using
strnlen() from gnulib.
	Mirek

--
Libvir-list mailing list
Libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]