Re: [PATCH] cpuCompare: Fix crash on unexpected CPU XML

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

 



> > When comparing a CPU without <model> element, such as
> > 
> >     <cpu>
> >         <topology sockets='1' cores='1' threads='1'/>
> >     </cpu>
> > 
> > libvirt would happily crash without warning.
> > ---
> >  src/cpu/cpu.c |    6 ++++++
> >  1 files changed, 6 insertions(+), 0 deletions(-)
> > 
> > diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c
> > index 279eee7..def6974 100644
> > --- a/src/cpu/cpu.c
> > +++ b/src/cpu/cpu.c
> > @@ -90,6 +90,12 @@ cpuCompareXML(virCPUDefPtr host,
> >      if (cpu == NULL)
> >          goto cleanup;
> >  
> > +    if (!cpu->model) {
> > +        virCPUReportError(VIR_ERR_OPERATION_INVALID,
> > +                "%s", _("no CPU model specified"));
> > +        goto cleanup;
> > +    }
> > +
> >      ret = cpuCompare(host, cpu);
> >  
> >  cleanup:
> 
>   Argh, ACK
> 
> though that could have been checked one level down in cpuCompare() which
> could also make some checking about host and host->arch before
> dereferencing.
> Either it's an internal API where we trust the args or it's not
> but it's important to fix the crash either there or in cpuCompare

Well, both of them are internal.

cpuCompare is used with virCPUDef structure created internally in libvirt so
we trust the caller that it knows what it's doing. However, we should probably
add some check to cpu* functions used internally to avoid troubles when we
change something in the future.

But that is a separate issue with lower priority, so I pushed this fix.

Jirka

--
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]