|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 20/22] libxc: check return values from malloc
Andrew Cooper writes ("Re: [PATCH 20/22] libxc: check return values from
malloc"):
> On 07/06/13 19:27, Ian Jackson wrote:
> > A sufficiently malformed input to libxc (such as a malformed input ELF
> > or other guest-controlled data) might cause one of libxc's malloc() to
> > fail. In this case we need to make sure we don't dereference or do
> > pointer arithmetic on the result.
...
> > @@ -709,12 +718,14 @@ int xc_cpuid_check(
...
> The function xc_cpuid_set() in this file also has an unchecked
> invocation of alloc_str()
Yes.
> > diff --git a/tools/libxc/xc_dom_arm.c b/tools/libxc/xc_dom_arm.c
> > index aaf35ca..df59ffb 100644
> > --- a/tools/libxc/xc_dom_arm.c
> > +++ b/tools/libxc/xc_dom_arm.c
> > @@ -170,6 +170,8 @@ int arch_setup_meminit(struct xc_dom_image *dom)
> > dom->shadow_enabled = 1;
> >
> > dom->p2m_host = xc_dom_malloc(dom, sizeof(xen_pfn_t) *
> > dom->total_pages);
> > + if ( dom->p2m_host == NULL )
> > + return -EINVAL;
>
> dom0->total_pages is, as best as I can tell, unvalidated thusfar into
> libxc, so is a likely candidate for overflowing.
dom->total_pages is set in xc_dom_mem_init from the mem_mb parameter
dom->which comes from the calling toolstack, and ultimately from the
domain configuration.
Do we think we need to defend against malicious mem_mb values ?
> > diff --git a/tools/libxc/xc_dom_core.c b/tools/libxc/xc_dom_core.c
> > index 21a8e0d..2a9c5a2 100644
> > --- a/tools/libxc/xc_dom_core.c
> > +++ b/tools/libxc/xc_dom_core.c
> > @@ -122,7 +122,10 @@ void *xc_dom_malloc(struct xc_dom_image *dom, size_t
> > size)
> >
> > block = malloc(sizeof(*block) + size);
>
> size is essentially arbitrary at this point. Perhaps worth checking for
> overflow?
Yes.
> > block = malloc(sizeof(*block));
> > - if ( block == NULL )
> > + if ( block == NULL ) {
>
> As per before, style.
Will fix.
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |