Re: [PATCH v3 5/5] storage: gluster: Use volume name as "<name>" field in the XML

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

 



On Wed, Apr 05, 2017 at 07:03:39 -0400, John Ferlan wrote:
> 
> 
> On 04/04/2017 08:20 AM, Peter Krempa wrote:
> > For native gluster pools the <dir> field denotes a directory inside the
> > pool. For the actual pool name the <name> field has to be used.
> > ---
> >  src/storage/storage_util.c                               | 16 ++++++++++++++--
> >  tests/virstorageutildata/gluster-parse-basic-native.xml  |  3 ++-
> >  .../virstorageutildata/gluster-parse-multivol-native.xml |  9 ++++++---
> >  3 files changed, 22 insertions(+), 6 deletions(-)
> > 
> > diff --git a/src/storage/storage_util.c b/src/storage/storage_util.c
> > index 1e44a2da4..7cc125a38 100644
> > --- a/src/storage/storage_util.c
> > +++ b/src/storage/storage_util.c
> > @@ -2846,6 +2846,7 @@ virStorageUtilGlusterExtractPoolSources(const char *host,
> >      xmlXPathContextPtr ctxt = NULL;
> >      xmlNodePtr *nodes = NULL;
> >      virStoragePoolSource *src = NULL;
> > +    char *volname;
> >      size_t i;
> >      int nnodes;
> >      int ret = -1;
> > @@ -2862,14 +2863,25 @@ virStorageUtilGlusterExtractPoolSources(const char *host,
> >          if (!(src = virStoragePoolSourceListNewSource(list)))
> >              goto cleanup;
> > 
> > -        if (!(src->dir = virXPathString("string(./name)", ctxt))) {
> > +        if (!(volname = virXPathString("string(./name)", ctxt))) {
> >              virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> >                             _("failed to extract gluster volume name"));
> >              goto cleanup;
> >          }
> > 
> > -        if (pooltype == VIR_STORAGE_POOL_NETFS)
> > +        if (pooltype == VIR_STORAGE_POOL_NETFS) {
> >              src->format = VIR_STORAGE_POOL_NETFS_GLUSTERFS;
> > +            src->dir = volname;
> > +        } else if (pooltype == VIR_STORAGE_POOL_GLUSTER) {
> > +            src->name = volname;
> > +
> > +            if (VIR_STRDUP(src->dir, "/") < 0)
> > +                goto cleanup;
> > +        } else {
> > +            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> > +                           _("unsupported gluster lookup"));
> > +            goto cleanup;
> 
> Coverity gleefully tells me volname is leaked this morning...

Sigh. I blame Andrea for his idea of passing pooltype, which resulted
into this. It won't ever happen since the else section is dead code,
but I'll add the free in this case since it's an actual bug.

Attachment: signature.asc
Description: PGP signature

--
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]
  Powered by Linux