On Tue, May 14, 2019 at 11:24:11AM +0200, Michal Privoznik wrote: > The idea of virCommand* APIs is that a possible error that > occurred while constructing cmd line is kept in virCommand > struct. If that's the case all subsequent calls to virCommand*() > are NO-OPs or they return an error. Well, > virCommandPassFDGetFDIndex() is not honoring that. This is the flaw that caused the crash I reported yesterday when running qemuxml2argvtest with ENOMEM simulation active. > > Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> > --- > src/util/vircommand.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/src/util/vircommand.c b/src/util/vircommand.c > index 9e99697c55..8695c98d1b 100644 > --- a/src/util/vircommand.c > +++ b/src/util/vircommand.c > @@ -1034,6 +1034,9 @@ virCommandPassFDGetFDIndex(virCommandPtr cmd, int fd) > { > size_t i = 0; > > + if (!cmd || cmd->has_error) > + return -1; > + > while (i < cmd->npassfd) { > if (cmd->passfd[i].fd == fd) > return i; Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list