[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1/4] Expand Xen IOMEMCON to 64 bits
Hi Daniel, On 12/03/15 17:12, Daniel De Graaf wrote: > diff --git a/libsepol/src/write.c b/libsepol/src/write.c > index d03dc20..d98a5eb 100644 > --- a/libsepol/src/write.c > +++ b/libsepol/src/write.c > @@ -1252,13 +1252,24 @@ static int ocontext_write_xen(struct > policydb_compat_info *info, policydb_t *p, > return POLICYDB_ERROR; > break; > case OCON_XEN_IOMEM: > - buf[0] = c->u.iomem.low_iomem; > - buf[1] = c->u.iomem.high_iomem; > - for (j = 0; j < 2; j++) > - buf[j] = cpu_to_le32(buf[j]); > - items = put_entry(buf, sizeof(uint32_t), 2, fp); > - if (items != 2) > - return POLICYDB_ERROR; > + if (p->policyvers >= > POLICYDB_XEN_VERSION_AARCH) { > + uint64_t b64[2]; > + b64[0] = c->u.iomem.low_iomem; > + b64[1] = c->u.iomem.high_iomem; > + for (j = 0; j < 2; j++) > + b64[j] = cpu_to_le64(b64[j]); > + items = put_entry(b64, > sizeof(uint64_t), 2, fp); > + if (items != 2) > + return POLICYDB_ERROR; > + } else { > + buf[0] = c->u.iomem.low_iomem; > + buf[1] = c->u.iomem.high_iomem; > + for (j = 0; j < 2; j++) > + buf[j] = cpu_to_le32(buf[j]); > + items = put_entry(buf, > sizeof(uint32_t), 2, fp); > + if (items != 2) > + return POLICYDB_ERROR; If low_iomem/high_iomem doesn't fit in an uint32_t it will be truncated and therefore we may, by mistake, give access to wrong MMIO region. Shouldn't we at least add a warning, if not throwing an error? Regards, -- Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |